Re: [gdal-dev] Questions about polygonization

2014-08-20 Thread John Twilley
Using qgis helped me see what you are saying.  The raster pixels are
being treated as rectangular areas but the actual coordinates are the
*corners* of those areas.  Modifying my code to offset the coordinates
by 0.5 causes the Contains test (and others) to produce results that
meet my expectations.

The really frustrating thing is that I think I had to learn this
already at least once over the past decade or so I've been tinkering
with GDAL.  I can't find a particularly embarrassing post in the
archives, but I'm confident it's there. :-)

Thank you for your patience.
--
mathuin at gmail dot com


On Tue, Aug 19, 2014 at 7:32 PM, Chaitanya kumar CH
chaitanya...@gmail.com wrote:
 Try qgis to display the raster and the vector output. It shows the raster
 pixels as rectangular areas. To confirm that there is no shift, compare
 their extents using gdalinfo and ogrinfo.

 On 20 Aug 2014 07:56, John Twilley math...@gmail.com wrote:

 The program is not shifting the pixels, but the program does assume
 the pixels to be points and not rectangular areas so maybe I will have
 to shift the pixels.  Do you know what transformation I would need to
 use?

 Jack.
 --
 mathuin at gmail dot com


 On Tue, Aug 19, 2014 at 7:17 PM, Chaitanya kumar CH
 chaitanya...@gmail.com wrote:
  Jack,
  The GDALPolygonize algorithm draws the polygon edges along the pixel
  edges.
  It assumes the pixels to be rectangular areas instead of points.
  In the example you described, the first polygon should contain four
  vertices
  with the pixel in the centre.
  Make sure that the program you are using to display them is not shifting
  the
  pixels.
 
  On 20 Aug 2014 07:12, John Twilley math...@gmail.com wrote:
 
  I am trying to use GDAL's polygonize algorithms to help me identify
  regions in landcover data.  I made a trivial example, but I am having
  trouble understanding the results that I get, nor can I determine how
  to get the results I want.
 
  Given the following raster:
 
  11 11 11 11 11
  11 11 11 11 11
  11 11 12 11 11
  11 11 11 11 11
  11 11 11 11 11
  11 11 11 11 11
 
  If I were to polygonize this raster, I would expect two polygons:  one
  which contains the single point 12, and another with an outer ring was
  the perimeter of the raster and an inner ring circling the single
  point 12.  I would also expect that the first polygon would contain
  the single point 12 and that the second polygon would contain all the
  points 11.
 
  Instead, what I got was a polygon starting from the single point 12
  and extending down and to the right one pixel, and another polygon
  with an outer ring that went off the down and right edges and an inner
  ring equal to the first polygon's outer ring.  The first polygon
  doesn't actually contain any points and the second one doesn't contain
  any points on either ring but does contain all the other points.
 
  What do I need to do to get the results I am expecting?
 
  Jack.
  --
  mathuin at gmail dot com
  ___
  gdal-dev mailing list
  gdal-dev@lists.osgeo.org
  http://lists.osgeo.org/mailman/listinfo/gdal-dev
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] Questions about polygonization

2014-08-19 Thread Mike Toews
Hi Jack,

I'm not sure if I understand the description of the shapes you see.
Can you provide the WKT for them? I seem to get two polygons that look
like they should:

import numpy as np
import rasterio.features
from shapely.geometry import shape
ar = np.ones((6, 5), 'B') * 11
ar[2, 2] = 12
gt = [0, 1, 0, 6, 0, -1]
for (sh, v) in rasterio.features.shapes(ar, transform=gt):
print('%s: %s' % (v, shape(sh)))

11: POLYGON ((0 6, 0 0, 5 0, 5 6, 0 6), (2 4, 3 4, 3 3, 2 3, 2 4))
12: POLYGON ((2 4, 2 3, 3 3, 3 4, 2 4))

-Mike
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] Questions about polygonization

2014-08-19 Thread Chaitanya kumar CH
Jack,
The GDALPolygonize algorithm draws the polygon edges along the pixel edges.
It assumes the pixels to be rectangular areas instead of points.
In the example you described, the first polygon should contain four
vertices with the pixel in the centre.
Make sure that the program you are using to display them is not shifting
the pixels.
 On 20 Aug 2014 07:12, John Twilley math...@gmail.com wrote:

 I am trying to use GDAL's polygonize algorithms to help me identify
 regions in landcover data.  I made a trivial example, but I am having
 trouble understanding the results that I get, nor can I determine how
 to get the results I want.

 Given the following raster:

 11 11 11 11 11
 11 11 11 11 11
 11 11 12 11 11
 11 11 11 11 11
 11 11 11 11 11
 11 11 11 11 11

 If I were to polygonize this raster, I would expect two polygons:  one
 which contains the single point 12, and another with an outer ring was
 the perimeter of the raster and an inner ring circling the single
 point 12.  I would also expect that the first polygon would contain
 the single point 12 and that the second polygon would contain all the
 points 11.

 Instead, what I got was a polygon starting from the single point 12
 and extending down and to the right one pixel, and another polygon
 with an outer ring that went off the down and right edges and an inner
 ring equal to the first polygon's outer ring.  The first polygon
 doesn't actually contain any points and the second one doesn't contain
 any points on either ring but does contain all the other points.

 What do I need to do to get the results I am expecting?

 Jack.
 --
 mathuin at gmail dot com
 ___
 gdal-dev mailing list
 gdal-dev@lists.osgeo.org
 http://lists.osgeo.org/mailman/listinfo/gdal-dev

___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Re: [gdal-dev] Questions about polygonization

2014-08-19 Thread John Twilley
Hi Mike!

I get the same polygons you get -- what I don't understand is why I'm
getting those polygons instead of the ones that I expected.  Can you
explain why those polygons look like they should?

Jack.
--
mathuin at gmail dot com


On Tue, Aug 19, 2014 at 7:15 PM, Mike Toews mwto...@gmail.com wrote:
 Hi Jack,

 I'm not sure if I understand the description of the shapes you see.
 Can you provide the WKT for them? I seem to get two polygons that look
 like they should:

 import numpy as np
 import rasterio.features
 from shapely.geometry import shape
 ar = np.ones((6, 5), 'B') * 11
 ar[2, 2] = 12
 gt = [0, 1, 0, 6, 0, -1]
 for (sh, v) in rasterio.features.shapes(ar, transform=gt):
 print('%s: %s' % (v, shape(sh)))

 11: POLYGON ((0 6, 0 0, 5 0, 5 6, 0 6), (2 4, 3 4, 3 3, 2 3, 2 4))
 12: POLYGON ((2 4, 2 3, 3 3, 3 4, 2 4))

 -Mike
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] Questions about polygonization

2014-08-19 Thread John Twilley
The program is not shifting the pixels, but the program does assume
the pixels to be points and not rectangular areas so maybe I will have
to shift the pixels.  Do you know what transformation I would need to
use?

Jack.
--
mathuin at gmail dot com


On Tue, Aug 19, 2014 at 7:17 PM, Chaitanya kumar CH
chaitanya...@gmail.com wrote:
 Jack,
 The GDALPolygonize algorithm draws the polygon edges along the pixel edges.
 It assumes the pixels to be rectangular areas instead of points.
 In the example you described, the first polygon should contain four vertices
 with the pixel in the centre.
 Make sure that the program you are using to display them is not shifting the
 pixels.

 On 20 Aug 2014 07:12, John Twilley math...@gmail.com wrote:

 I am trying to use GDAL's polygonize algorithms to help me identify
 regions in landcover data.  I made a trivial example, but I am having
 trouble understanding the results that I get, nor can I determine how
 to get the results I want.

 Given the following raster:

 11 11 11 11 11
 11 11 11 11 11
 11 11 12 11 11
 11 11 11 11 11
 11 11 11 11 11
 11 11 11 11 11

 If I were to polygonize this raster, I would expect two polygons:  one
 which contains the single point 12, and another with an outer ring was
 the perimeter of the raster and an inner ring circling the single
 point 12.  I would also expect that the first polygon would contain
 the single point 12 and that the second polygon would contain all the
 points 11.

 Instead, what I got was a polygon starting from the single point 12
 and extending down and to the right one pixel, and another polygon
 with an outer ring that went off the down and right edges and an inner
 ring equal to the first polygon's outer ring.  The first polygon
 doesn't actually contain any points and the second one doesn't contain
 any points on either ring but does contain all the other points.

 What do I need to do to get the results I am expecting?

 Jack.
 --
 mathuin at gmail dot com
 ___
 gdal-dev mailing list
 gdal-dev@lists.osgeo.org
 http://lists.osgeo.org/mailman/listinfo/gdal-dev
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] Questions about polygonization

2014-08-19 Thread Chaitanya kumar CH
Try qgis to display the raster and the vector output. It shows the raster
pixels as rectangular areas. To confirm that there is no shift, compare
their extents using gdalinfo and ogrinfo.
 On 20 Aug 2014 07:56, John Twilley math...@gmail.com wrote:

 The program is not shifting the pixels, but the program does assume
 the pixels to be points and not rectangular areas so maybe I will have
 to shift the pixels.  Do you know what transformation I would need to
 use?

 Jack.
 --
 mathuin at gmail dot com


 On Tue, Aug 19, 2014 at 7:17 PM, Chaitanya kumar CH
 chaitanya...@gmail.com wrote:
  Jack,
  The GDALPolygonize algorithm draws the polygon edges along the pixel
 edges.
  It assumes the pixels to be rectangular areas instead of points.
  In the example you described, the first polygon should contain four
 vertices
  with the pixel in the centre.
  Make sure that the program you are using to display them is not shifting
 the
  pixels.
 
  On 20 Aug 2014 07:12, John Twilley math...@gmail.com wrote:
 
  I am trying to use GDAL's polygonize algorithms to help me identify
  regions in landcover data.  I made a trivial example, but I am having
  trouble understanding the results that I get, nor can I determine how
  to get the results I want.
 
  Given the following raster:
 
  11 11 11 11 11
  11 11 11 11 11
  11 11 12 11 11
  11 11 11 11 11
  11 11 11 11 11
  11 11 11 11 11
 
  If I were to polygonize this raster, I would expect two polygons:  one
  which contains the single point 12, and another with an outer ring was
  the perimeter of the raster and an inner ring circling the single
  point 12.  I would also expect that the first polygon would contain
  the single point 12 and that the second polygon would contain all the
  points 11.
 
  Instead, what I got was a polygon starting from the single point 12
  and extending down and to the right one pixel, and another polygon
  with an outer ring that went off the down and right edges and an inner
  ring equal to the first polygon's outer ring.  The first polygon
  doesn't actually contain any points and the second one doesn't contain
  any points on either ring but does contain all the other points.
 
  What do I need to do to get the results I am expecting?
 
  Jack.
  --
  mathuin at gmail dot com
  ___
  gdal-dev mailing list
  gdal-dev@lists.osgeo.org
  http://lists.osgeo.org/mailman/listinfo/gdal-dev

___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev