[postgis-users] Possible for ST_Intersects to not include the perimeter?

Joseph Spenner joseph85750 at yahoo.com
Wed Jan 21 15:34:16 PST 2015

Pete:  Thanks for the reply!  But I just tried, and ST_Contains will miss if the alert polygon spans multiple states.  I have an example which spans a bit of California and Arizona.  When I select AZ or CA, I get nothing back.  So it appears, as the documentation states, ST_Contains will only return true if all of the points in "A" are completely inside "B".

      From: Pete Yunker <peter.yunker at homejunction.com>
 To: Joseph Spenner <joseph85750 at yahoo.com>; PostGIS Users Discussion <postgis-users at lists.osgeo.org> 
 Sent: Wednesday, January 21, 2015 3:17 PM
 Subject: Re: [postgis-users] Possible for ST_Intersects to not include the perimeter?
I believe you want ST_Contains.  Using sample Census TIGER data for states and counties:
SELECT COUNT(c.*)FROM prod.states sINNER JOIN prod.counties cON (s.name = 'Georgia'AND ST_Contains(s.the_geom, c.the_geom));--159
SELECT COUNT(*) from prod.counties WHERE state_cd = 'GA';--159
I suppose it's possible that the NWS polygons aren't using the exact same county/boundary border as your reference states boundaries.  As such, you could also use a slight negative buffer on the NWS polygons to further ensure that they don't overlap an adjacent state border.
Regards,Pete Yunker

On Jan 21, 2015, at 5:01 PM, Joseph Spenner <joseph85750 at yahoo.com> wrote:

For the record, my best guess (which didn't work) was:
select ST_Asgeojson( geom ) from polys where ST_Intersects(ST_GeomFromGeoJSON('$jsonPoly'), geom)=TRUE and ST_Touches(ST_GeomFromGeoJSON('$jsonPoly'), geom)=FALSE

Since 'touch' seemed to be the way to address the perimeter points.  But apparently this is not the case.

      From: Joseph Spenner <joseph85750 at yahoo.com>
 To: "postgis-users at lists.osgeo.org" <postgis-users at lists.osgeo.org> 
 Sent: Wednesday, January 21, 2015 2:22 PM
 Subject: Possible for ST_Intersects to not include the perimeter?
I have a polygon as an input, and I'm trying to find all polygons which share points, but not the perimiter points themselves.  Is this possible?
Real application:  I have NWS polygons describing Thunderstorm Warnings, which are made up of counties within the state.  Some of those counties might be on the edge of the state.  I want to query my database to show me all Warnings which are in a supplied state.  However, if I query the adjacent state which borders the counties from the first state, I get those Warnings because they share the same parimeter points.
Is there a way to construct a query which will not return anything if the only points in common are the perimeter values themselves?
I tried a few variations on ST_Intersects/ST_Covers/ST_Contains/ST_Overlaps, supplying various AND/OR and TRUE/FALSE combinatins, but I can't seem to get the right combo to accomplish my task.
Any help would be great.
Regards,Joseph Spenner

postgis-users mailing list
postgis-users at lists.osgeo.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20150121/59235c42/attachment.html>

More information about the postgis-users mailing list