[postgis-users] exterior rings in multipolygons
Mr. Puneet Kishor
punk.kish at gmail.com
Tue Jul 26 13:16:09 PDT 2011
On Jul 26, 2011, at 9:56 AM, Sandro Santilli wrote:
> On Tue, Jul 26, 2011 at 09:47:23AM -0500, Mr. Puneet Kishor wrote:
>>
>> On Jul 26, 2011, at 9:34 AM, Sandro Santilli wrote:
>>
>>> On Tue, Jul 26, 2011 at 09:31:50AM -0500, Mr. Puneet Kishor wrote:
>>>
>>>> ERROR: function st_interiorringn(geometry) does not exist
>>>
>>> Check your parens, the call above is missing a parameter (ring number).
>>>
>>
>> That is a bit embarrassing. Yes, I had missed out on giving the ring number. However, still no luck --
>>
>> SELECT objectid,
>> ST_NRings(the_geom) num_of_rings,
>> ST_NumInteriorRings(the_geom) num_of_int_rings,
>> ST_NumPoints(ST_ExteriorRing(ST_GeometryN(the_geom,1))) num_of_points_ext_ring,
>> ST_AsText(the_geom) wkt_feature,
>> ST_AsText(ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(the_geom, 1)))) wkt_ext_ring,
>> ST_AsText(ST_MakePolygon(ST_InteriorRingN(ST_GeometryN(the_geom, 2), 2))) wkt_int_ring_a,
>> ST_AsText(ST_MakePolygon(ST_GeometryN(the_geom, 2))) wkt_int_ring_b
>> FROM table
>> WHERE objectid = 280;
>>
>> objectid: 280;
>> num_of_rings: 4;
>> num_of_int_rings: 3;
>> num_of_points_ext_ring: 496;
>> wkt_feature: "MULTIPOLYGON(((<1>),(<2>),(<3>),(<4>))";
>> wkt_ext_ring: "POLYGON((<1>))";
>> wkt_int_ring_a: "";
>> wkt_int_ring_b: ""
>>
>> As you see, I tried to get the interior ring "n" two different ways. Not getting anywhere.
>
> Write down a matrix of all combinations you tried.
> Use real paper, and pencil.
> Publish a scanned version.
>
So, as advised, I got a real pencil and paper, drew out all my options, scanned them in, and discovered that I had a poor understanding on the relationship of MULTIPOLYGONs and GEOMETRIES. Turns out, my MULTIPOLYGON has 1 GEOMETRY, 4 rings, one being exterior and three interior rings. Hence, an expression like the following works well
ST_NumPoints(ST_InteriorRingN(ST_GeometryN(the_geom, 1), 2))
Now, here is where it gets interesting. My test feature in reality is a lot more complicated, as can be seen in the attached image (see the blue bordered multipoly). I took the shapefile and shp2pgsql-ed it, and now I get only 4 rings in my query. My guess is that these four rings are the ones on the top of the image. So, I thought maybe I have another GEOMETRY that I am missing out on. But, no... ST_NumGeometries(the_geom) = 1.
Can anyone theorize what happened to the rest of the feature? How did it get lost in translation? Was it simply ignored, or was it made into a different feature? Or, is it there, but I still haven't understood the MULTIPOLYGON/GEOMETRY/POLYGON/LINERSTRING nexus really well.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 280.png
Type: image/png
Size: 57981 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20110726/5538dfe1/attachment.png>
More information about the postgis-users
mailing list