You are not logged in.

#1 2021-10-16 08:34:14

iamzain
Banned
From: PAKISTAN
Registered: 2021-10-16
Posts: 1

Using ST_Transform() to get the length of a LineString using SRID 4326

If I cast to text, I get a very small number such as 0.086.:

ST_Length(ST_Transform(geometry, 4326))::text
It seems that this is in geodesic distances.

How would I convert the geodesic distance into meters?

8B3HTms

Using ST_Transform() to get the length of a LineString using SRID 4326 returning very small numbers

Offline

#2 2021-10-16 14:57:02

n76
Member
Registered: 2013-05-22
Posts: 302

Re: Using ST_Transform() to get the length of a LineString using SRID 4326

I am far from an expert on this so there are likely better ways. . .

As I understand it ST_Length() returns the length in the projection units. So using a ST_Length(ST_transform(geometry,*)) would need a * projection that is close to meters for the area of interest. If you are only dealing with a small region and don’t mind hard coding things then you could use the valid UTM projection for that area.

In my case, I needed to clean up the ways some anyway (for distances between junctions) and found the easiest way was to create a separate table/database for normally used for routing. It turns out that osm2pgrouting populates a number of fields including one that is the way length in meters.

Offline

#3 2021-10-17 09:47:20

SK53
Member
Registered: 2009-01-11
Posts: 658

Re: Using ST_Transform() to get the length of a LineString using SRID 4326

You can use a ::geography type-cast operator which will push your underlying geometry into a unified :

SELECT ST_LENGTH(geometry::geography) FROM ...

will return the length in metres. You can compare the result with plain ST_LENGTH to sense check

Offline

Board footer

Powered by FluxBB