В PostGIS ST_length()
функция возвращает длину строки в некоторых единицах, но не в метрах.
Есть ли такая функция, как ST_Length()
в метрах?
St_Length () возвращает длину в единицах своей системы пространственной привязки. Если вы хотите получить счетчики, вам нужно будет преобразовать вашу функцию в другой SRS, который использует счетчики в качестве единиц измерения. Это может быть сделано на лету, поэтому не беспокойтесь о записи другого набора данных.
SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;
В этом примере SRID 26915 - это UTM Zone 15 N, NAD83.
Похоже, что с PostGIS 2.0 (может быть, раньше) вы можете просто сделать это
ST_Length
, перенеся геометрию в географию:ST_Length(geom::geography)
Например, расстояние между 50 ° с.ш., 12 ° в.д. и 51 ° в.д., 13 ° в.д .:
который дает
источник
Примеры запроса SQL: как рассчитать длину полилинии, геометрию для нескольких таблиц в посте
Запрос SQL (длина в км (/ 1000 - для метров)):
источник
Используйте следующую формулу:
источник