Opened 17 years ago
Closed 15 years ago
#24 closed enhancement (wontfix)
Enhancement: containsVertex function
Reported by: | mtnclimb | Owned by: | |
---|---|---|---|
Priority: | low | Milestone: | PostGIS 1.5.0 |
Component: | postgis | Version: | |
Keywords: | Cc: |
Description (last modified by )
A containsVertex function might be a useful addition.
int containsVertex(Geometry geom, double x, double y)
I geom contains a vertex with location (x,y), returns the index of that vertex. Otherwise returns -1. For geometrys which contain more than one coordinate sequence, the index is the cumulative index over all coordinate sequences.
This can be implemented as a fast linear scan of all vertices in the geometry.
Change History (6)
comment:1 by , 17 years ago
comment:3 by , 16 years ago
One idea is to use the cumulative index idea. So for a ML:
g = MULTILINESTRING((0 0, 1 1) (1 1, 2 2))
ST_ContainsPoint(g, pt(0,0)) = 0 ST_ContainsPoint(g, pt(1,1)) = 1 1st one found is returned ST_ContainsPoint(g, pt(2,2)) = 3 2nd linestring has indexes 2, 3
Another is to return a pair (lineIndex, ptIndex) - but this might make for more complicated code in the caller.
comment:5 by , 16 years ago
Description: | modified (diff) |
---|---|
Milestone: | → 2.0 |
comment:6 by , 15 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Two year old, no movement, retiring until someone decides to love this ticket.
Agreed, esp. if one is doing linear referencing or edit a single point in a geometry.
or int ST_ContainsPoint(Geometry geom, Geometry point) or int ST_ContainsCoordinate(Geometry geom, Geometry point)
Though I think the cumulative index part could get confusing. We could restrict the use to LineStrings only.