RE: Help creating "corridors"

Peter Borissow <[email protected]>
Newsgroups gmane.comp.gis.postgis
Message-ID <IA1PR10MB73582CD96E1CD4E5C0DB802EE4F32@IA1PR10MB7358.namprd10.prod.outlook.com>
Here's an example of how I create a buffer, in meters, around a point. Point is in WGS84 (EPSG:4326) and "20" is in meters. 900913 is a (probably obsolete) code for Google Maps Global Mercator (Spherical Mercator in meters)

    select
      st_transform(
        st_buffer(
          st_transform(
            ST_GeomFromText('POINT(39.04307785563378 -77.10195383651495)', 4326), 900913
          ), 20
        ), 4326
      )
    as geom

BTW, if you're using leaflet or openlayers you can do everything you want using javascript. Check out JSTS which is a javascript port of JTS. If I'm not mistaken PostGIS uses GEOS which is the C++ port of JTS.

Peter

-----Original Message-----
From: Luca Bertoncello <[email protected]> 
Sent: Saturday, February 8, 2025 9:16 AM
To: [email protected]
Subject: Re: Help creating "corridors"

Am 08.02.2025 um 14:11 schrieb Luca Bertoncello:

Hi again

> Now my problem is to create these "corridors", so let's say 20 km left 
> and 20 km right of the lines.
> In other words, I need to convert my lines in polygons, then export 
> them as GeoJSON.
> 
> And now the very question: how can I create these polygons?

Maybe I got something...

So I create two tables:

CREATE TABLE gafor_points
(
  gafor int,
  position int,
  coords geography(POINT)
);

CREATE TABLE gafor_routes
(
  gafor int,
  route geometry
);

In the first table I inserted the data I drawed with my simple Javascript script (see last message).
Then I converted them to the geometries:

INSERT INTO gafor_routes (SELECT gafor, ST_MakeLine(coords::geometry) from gafor_points group by gafor);

and then I create the corridors (example for GAFOR 10):
SELECT gafor, ST_AsGeoJSON(ST_Buffer(route, 0.2, 'endcap=square
join=bevel')) from gafor_routes where gafor = 10;

Now my question: as I said, I'd like to have the corridor 20km left and 20km right of the line.
I got it with the query, usind "0.2" as distance by ST_Buffer, but I got this value by "try and cry".
Reading the docs, the distance for ST_Buffer is:
------
For geometry, the distance is specified in the units of the Spatial Reference System of the geometry. For geography, the distance is specified in meters.
------
Since I use geometry for my route, the unit is the Spatial Reference System of the geometry.
With the query:

SELECT ST_SRID(route) from gafor_routes where gafor = 10;

I see, the system is 4326.

Now the very big question: how to convert meters in "unit of the Spatial Reference System"?

I searched for that, but I didn't found the answer...

Thanks a lot for your help!
Luca Bertoncello
([email protected])
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.