[Gdal-dev] -spat switch in ogr2ogr
Brian Timoney
brian at thetimoneygroup.com
Wed Oct 25 14:46:37 EDT 2006
Frank Warmerdam wrote:
> Brian Timoney wrote:
>>
>> All:
>>
>> At the risk of disproving the adage that the only dumb question is
>> the one left unasked, I'm having some trouble applying the -spat
>> switch using ogr2ogr from the command line.
>>
>> I have a table of US cities in PostGIS called..."cities" in lat/long
>> NAD 83 (EPSG:4269)
>>
>> I want to pull cities from the middle of the country from a BBOX of
>> (-114,30,-100,45) and throw them into a new shapefile.
>>
>> So I hazarded...
>>
>> ogr2ogr mid_city.shp PG:'dbname=mydb user=me' cities -spat '-114 30
>> -100 45'
>>
>> No dice (empty shapefile). There are 75+ features that fall inside
>> the bounding box.
>>
>> I've also tried double quotes and no quotes around the xmin ymin xmax
>> ymax values.
>
> Brian,
>
> It should work with:
>
> ogr2ogr mid_city.shp PG:'dbname=mydb user=me' cities -spat -114 30
> -100 45
>
> Would it be fair for me to guess that the following works fine?
>
> ogr2ogr mid_city.shp PG:'dbname=mydb user=me' cities
>
> So if my suggested approach (no quotes on -spat argument) doesn't
> work, then
> I'm at a bit of a loss. I guess I'd have to actually test things at
> my end!
>
> By the way, you might want to set the CPL_DEBUG environment variable
> to ON.
> This will produce various debug output of the actual SQL being sent to
> postgis. This might give clues.
>
> Best regards,
Frank:
OK, switching the debugging on--
$ CPL_DEBUG=ON ogr2ogr mid_city.shp PG:'dbname=mydb user=me' cities
-spat -114 30 -100 45
Gave me what ogr2ogr is passing to PostGIS. The key part is the WHERE
statement--
WHERE the_geom && GeometryFromText('BOX3D(-114.000000
30.000000,-100.00000 45.000000)'::box3d,-2))
I fooled around replicating the WHERE statement in PgAdmin's SQL window
and ran into the following issues--
1) The GeometryFromText function no longer honors 'BOX3D'
http://postgis.refractions.net/pipermail/postgis-users/2005-July/008631.html
2) Following the suggestion above, I tried
WHERE the_geom && SetSRID('BOX3D(-114 30,-100 45)::box3d,-1)
and received an error for "Operation on two geometries with different SRIDs"
3) Since my PostGIS table has an SRID of 4269, I tried
WHERE the_geom && SetSRID('BOX3D(-114 30,-100 45)::box3d,4269)
and everything worked swimmingly....
I hope the above helps,
Brian
--
-----------------------
The Timoney Group
518 17th Street
Suite 980
Denver, CO 80202
Ph: (303) 929-3722
Fax: (303) 571-4304
www.thetimoneygroup.com
-----------------------
More information about the Gdal-dev
mailing list