Каковы единицы измерения расстояния в классе com.vividsolutions.jts.geom.Geometry? - PullRequest
9 голосов
/ 28 января 2010

Наш проект VB.NET использует библиотеку Java от Vivid Solutoins (com.vividsolutions.jts.geom.Geometry) для выполнения вычислений геометрии. Помощь здесь: http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/geom/Geometry.html

Что я не могу понять, так это единицы измерения, относящиеся к свойству Buffer, или любое другое расстояние в этом отношении. Моя программа имеет дело с Морскими милями, и в документации не указано, указаны ли единицы измерения: градусы, мили, морские мили, километры, дюймы и т. Д.

Кто-нибудь использовал эту библиотеку, кто знает ответ? Заранее спасибо.

Ответы [ 4 ]

6 голосов
/ 28 января 2010

Прежде всего, я не знаю этого API, я только что просмотрел указанную вами ссылку.

Судя по Javadocs для Координата , он говорит:

[Coordinate - это] легкий класс, используемый для хранения координат на двумерной декартовой плоскости. Он отличается от точки, которая является подклассом геометрии. В отличие от объектов типа Point (которые содержат дополнительную информацию, такую ​​как конверт, прецизионная модель и информация о системе пространственной привязки)

Так что может показаться , что у Geometry нет единиц измерения как таковых, но у Point, ее подкласса, есть, и вы можете указать их.

Я не удивлюсь, если у класса Geometry нет единиц измерения как таковых, и он просто представляет концепцию точки в пространстве в какой-либо конкретной системе координат.

5 голосов
/ 12 октября 2010

Это старый пост, но здесь есть ответ для всех, кто ищет, поскольку невероятно, что в документации Java не указаны единицы, возвращаемые методом. Расстояние возвращается в градусах центрального угла. Затем вы можете использовать любое количество формул для преобразования в требуемую единицу измерения. Проще всего перевести в радианы. 1 радиан = 180 градусов, деленное на пи (рад = 180 градусов / пи). Оттуда вы можете умножить радианы на средний радиус Земли в выбранных вами единицах (например, 6371 км), чтобы получить расстояние между двумя точками. Более точные методы также доступны, но вы можете посмотреть их в сети.

2 голосов
/ 26 ноября 2017

Я подтвердил одному из авторов библиотеки и сам проверил ее, используя геопространственные файлы с различными проекциями, что единицы расстояния зависят от CRS исходного файла. Это описано в их FAQ здесь: https://locationtech.github.io/jts/jts-faq.html#B5

Быстрый способ найти это - найти код EPSG на http://epsg.io/ и найти единицы измерения. Например, EPSG 3347 имеет единицы измерения метров.

0 голосов
/ 08 ноября 2018

Поскольку я недавно работал над этой библиотекой (http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/geom/Geometry.html) и после исследования я обнаружил, что единичное расстояние, возвращаемое при вызове некоторых методов, вычисление расстояния с этим API будет в градусах. Чтобы преобразовать его в километр, предполагается, что возвращаемое значение равно d , тогда вам нужно преобразовать его в радиан и умножить на радиус Земли 6371 км. Формула будет d / 180 * PI * 6371.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...