You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#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: 313

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: 705

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