[postgis-users] Latitude and longitude distances

Mark Fenbers Mark.Fenbers at noaa.gov
Thu Jul 28 09:00:38 PDT 2005


OK.  Then use transform() to convert degrees to meters... as I stated in 
the last sentence of my original reply...  There's a lot of info and 
easy to miss... ;-)

Mark

Mark Fenbers wrote:

> Actually, I do this sort of thing all the time, and PostGIS is perfect 
> for the job!  First, you want to convert your lat/lon coordinate into 
> a POINT geometry.  Sometimes I do this by duplicating the original 
> location table with 'SELECT INTO TEMP ..." and adding a geometry 
> column (see AddGeometryColumn() function) for my many locations.  You 
> will also need to convert your given lat/lon to a POINT geometry (see 
> MakePoint() function).  Next you will want to use the buffer() 
> function to create a polygon that is a certain radius from your given 
> location, and finally test which locations are in the polygon 
> (contains() function).
>
> So let's say your many locations were in a table called location.lat 
> and location.lon, and your reference location was (80.5W, 40.5N).  
> Then to retrieve all rows in a 3-degree radius of you reference, you 
> could so something like the following (although it is probably not the 
> most efficient method):
>
> Begin;
> SELECT INTO TEMP gislocation * from location;
> SELECT addGeometryColumn( 
> 'public','gislocation','the_geom',4269,'POINT',2 );  -- 4269 might 
> differ if your lat,lon is not referenced to NAD83.
> UPDATE gislocation set the_geom = makePoint( lon,lat );
> SELECT * from gislocation where contains( buffer( makePoint( 80.5,40.5 
> ), 3 ), the_geom );
>
> I haven't tested any of this, nor looked up the function syntax, so 
> there probably are errors, but this will get you in the ballpark.  
> Also, if you want to compute a 3km radius instead of a 3-degree raduis 
> with buffer(), then you have to first convert all your geometries into 
> an equal-area projection using the transform() function, such as SRID 
> = 2792.
>
> Hope this helps!
>
> Mark
>
> Vacuum Joe wrote:
>
>> Hello,
>>
>> I'm new to PostGIS.  I have what I hope is a basic
>> question.  I have a database with many locations in
>> it.  These locations are all specified by latitude and
>> longitude.  I need to be able to do things like select
>> all the rows that are within a certain radius of a
>> given latitude/longitude.  The results don't have to
>> be precise, and the radius will never be more than a
>> few miles.
>>
>> I assume this type of use is perfectly within what
>> PostGIS can do, but I can't figure out how to store
>> lon/lat data and do searches on it.
>>
>> If there are any docs or examples you could point me
>> to, I would greatly appreciate it.
>>
>> Thanks
>>
>>
>> __________________________________________________
>> Do You Yahoo!?
>> Tired of spam?  Yahoo! Mail has the best spam protection around 
>> http://mail.yahoo.com _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>  
>>
>_______________________________________________
>postgis-users mailing list
>postgis-users at postgis.refractions.net
>http://postgis.refractions.net/mailman/listinfo/postgis-users
>  
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Mark.Fenbers.vcf
Type: text/x-vcard
Size: 156 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20050728/e060cc13/attachment.vcf>


More information about the postgis-users mailing list