Hi everyone,
Do you know how to identify whether a point (OGRPoint) is belong to a polygon (OGRPolygon) ? (the polygon covers the point) Thanks and regards, Tai |
Tai,
You can use OGR_G_Within() OGR_G_WIthin(point,polygon) will return true if the point is within the polygon. You can access various other geometry functions from the OGRGeometry class. http://www.gdal.org/ogr/ogr__api_8h.html#a80ba9e516ccae381ae7240cc9684eb72 On Fri, Jul 20, 2012 at 7:04 AM, taibc <[hidden email]> wrote: Hi everyone, -- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Tai,
You can use the spatial filter of the ogr layer to filter the point features to speed things up. You will still have to test if the point is within the polygon but it will be faster. Also, make sure the test is like point->Within(polygon) and not polygon->Within(point) OGRLayer::SetSpatialFilter() http://www.gdal.org/ogr/classOGRLayer.html#a0b4ab45cf97cbc470f0d60474d3e4169
On Fri, Jul 20, 2012 at 9:29 AM, Bui Chi Tai <[hidden email]> wrote:
-- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Hi Chaitanya,
I still can't run the method "Geometry::Within". And I got the error: "GEOS support not enable" when trying use this method. Please find the attached file for sample code.Source1.cpp About spatial filter, you said that: we can use the spatial filter of the ogr layer to filter the point features. But, I think it is used to filter features that geometrically intersect the filter geometry. For example: if I have one polygon A feature, I can use the method "SetSpatialFilter" to get other features (Point or Polygon) that geometrically intersect with A.
|
Tai,
GDAL needs GEOS to perform these geometry functions. Make sure you install that. On Sat, Jul 21, 2012 at 12:19 PM, taibc <[hidden email]> wrote: Hi Chaitanya, -- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Thanks Chaitanya,
I tried to install GEOS on Window. But I got below error: NMAKE fatal error U1077 ....return code '0x2' Detail is: algorithm\LineIntersector.cpp(671) : error C3861: 'isnan': identifier not found algorithm\LineIntersector.cpp(672) : error C3861: 'isnan': identifier not found algorithm\LineIntersector.cpp(680) : error C3861: 'isnan': identifier not found algorithm\LineIntersector.cpp(681) : error C3861: 'isnan': identifier not found algorithm\LineIntersector.cpp(736) : error C3861: 'isnan': identifier not found algorithm\LineIntersector.cpp(737) : error C3861: 'isnan': identifier not found NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\cl.EXE"' : return code '0x2' Stop. NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\nmake.EXE"' : return code '0x2' Stop.
|
Tai,
Pease refer to http://trac.osgeo.org/geos/ On Sat, Jul 21, 2012 at 2:06 PM, taibc <[hidden email]> wrote: Thanks Chaitanya, -- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Thanks Chaitanya,
I reported the error there. And waiting for answers. Kind regards, Tai |
In reply to this post by chaitanya_ch
Hi Chaitanya, I installed GEOS succesfful, and copy file geos.dll into my project. But I still got the error: "GEOS support not enable" when using the method "Within" Are there something wrongs ? Thanks and regards, Tai |
On 23 July 2012 11:52, taibc <[hidden email]> wrote:
> I installed GEOS succesfful, and copy file geos.dll into my project. But I > still got the error: "GEOS support not enable" when using the method > "Within" > > Are there something wrongs ? You need to edit nmake.opt and rebuild GDAL. Check this thread: http://lists.osgeo.org/pipermail/gdal-dev/2010-March/023829.html Best regards, -- Mateusz Loskot, http://mateusz.loskot.net _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Thanks Mateusz, I edited the nmake.opt by adding below lines: GEOS_DIR = C:/geos-3.3.5 GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include/geos -DHAVE_GEOS Then, I rebuilt GDAL, but still got the error: "GEOS support not enable". Kind regards, Tai From: Mateusz Loskot [via OSGeo.org] <[hidden email]> To: taibc <[hidden email]> Sent: Monday, July 23, 2012 5:56 PM Subject: Re: How to identify a point is belong to a polygon ?
On 23 July 2012 11:52, taibc <[hidden email]> wrote:
> I installed GEOS succesfful, and copy file geos.dll into my project. But I > still got the error: "GEOS support not enable" when using the method > "Within" > > Are there something wrongs ? You need to edit nmake.opt and rebuild GDAL. Check this thread: http://lists.osgeo.org/pipermail/gdal-dev/2010-March/023829.html Best regards, -- Mateusz Loskot, http://mateusz.loskot.net _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev If you reply to this email, your message will be added to the discussion below:
http://osgeo-org.1560.n6.nabble.com/How-to-identify-a-point-is-belong-to-a-polygon-tp4989501p4990029.html
|
Tai,
If your rebuild was successful with geos, the only reason for you to get the error is that the application is accessing the wrong libraries somewhere in your system. Do a clean rebuild and make sure the LD_LIBRARY_PATH and GDAL_DATA are set correctly. On Tue, Jul 24, 2012 at 7:37 AM, taibc <[hidden email]> wrote:
-- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Thanks Chaitanya, I haven't set LD_LIBRARY_PATH and GDAL_DATA yet. Do you know how to set them on Visual C++ 2010 ? Kind regards, Tai From: chaitanya_ch [via OSGeo.org] <[hidden email]> To: taibc <[hidden email]> Sent: Tuesday, July 24, 2012 10:38 AM Subject: Re: How to identify a point is belong to a polygon ?
Tai, If your rebuild was successful with geos, the only reason for you to get the error is that the application is accessing the wrong libraries somewhere in your system. Do a clean rebuild and make sure the LD_LIBRARY_PATH and GDAL_DATA are set correctly. On Tue, Jul 24, 2012 at 7:37 AM, taibc <[hidden email]> wrote:
-- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev If you reply to this email, your message will be added to the discussion below:
http://osgeo-org.1560.n6.nabble.com/How-to-identify-a-point-is-belong-to-a-polygon-tp4989501p4990248.html
|
Tai,
The environment variables can be set at the command prompt temporarily using SET LD_LIBRARY_PATH=C:\path\to\gdal\librariesYou can set them in the project settings in VC++. I don't know how. You can also set them system wide at MyComputer->Settings. On Tue, Jul 24, 2012 at 9:50 AM, taibc <[hidden email]> wrote:
-- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Thanks Chaitanya, I modified as your suggestion. But, still got the error (GEOS support not enable) when executing the program. About building GEOS, if I only add two first lines, the process will be sucessful: 1. GEOS_DIR = C:/geos-3.3.5 2. GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib if I add third line, the building process will get errors 3. GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include/geos -DHAVE_GEOS Errors: LINK : fatal error LNK1181: cannot open input file 'ogr\ogrsf_frmts\ogrsf_frmts. lib' NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\lib.EXE"' : return code '0x49d' Stop. Tai From: chaitanya_ch [via OSGeo.org] <[hidden email]> To: taibc <[hidden email]> Sent: Tuesday, July 24, 2012 12:48 PM Subject: Re: How to identify a point is belong to a polygon ?
Tai, The environment variables can be set at the command prompt temporarily using SET LD_LIBRARY_PATH=C:\path\to\gdal\librariesYou can set them in the project settings in VC++. I don't know how. You can also set them system wide at MyComputer->Settings. |
Tai,
Geos code is not enabled in GDAL without the third line you omitted. Check the compilation messages to identify the problem. Perform a 'clean' before you build until this problem is resolved. On Tue, Jul 24, 2012 at 12:48 PM, taibc <[hidden email]> wrote:
-- Best regards, Chaitanya kumar CH. +91-9494447584 17.2416N 80.1426E _______________________________________________ gdal-dev mailing list [hidden email] http://lists.osgeo.org/mailman/listinfo/gdal-dev |
Free forum by Nabble | Edit this page |