У меня есть две геопространственные простые выпуклые многоугольные области, в широтах и долготах (десятичные градусы), которые я хочу вычислить с использованием класса Javas Polygon. Я в основном хочу увидеть, пересекаются ли эти два лата, длинные полигоны и рассчитать площади (в квадратных метрах) обоих. Теперь класс java.awt.Polygon использует только координатную систему x, y, но мне нужно использовать lats, longs. Как это сделать и/или есть ли другие классы/библиотеки?Как использовать класс Javas Polygon с lat, longs
ответ
Все, что вам нужно сделать, это конвертировать from spherical to rectangular coordinates, если вы считаете, что это действительно важно.
Я не уверен, что это так, потому что java.awt.Polygon - это просто структура данных, содержащая пары пар значений. Если вы читаете javadocs, они говорят
Класс Polygon инкапсулирует описание замкнутой двумерной области в пространстве координат. Эта область ограничена произвольным числом отрезков, каждая из которых является одной стороной многоугольника. Внутри многоугольник содержит список (x, y) координатных пар, где каждая пара определяет вершину многоугольника, а две последовательные пары - это конечные точки линии, являющейся стороной многоугольника. Первая и последняя пары точек (x, y) соединяются сегментом линии, который закрывает многоугольник.
Кажется, что эти точки обозначают как x и y, что заставляет всех нас думать о прямоугольных координатах, но они не должны быть с вашей точки зрения. Ошибка в обслуживании вашей сферы будет рассматривать ее как 2D-пространство. Ваш радиус большой и постоянный. Вы просто не можете рассчитывать на использование каких-либо методов Polygon (например, contains(), getBounds2D() и т. Д.)
В этом случае важно, чтобы ваш расчет области. Вы можете использовать Polygon для расчета вашей территории, хранения латов и длин, до тех пор, пока вы рассматриваете Polygon как структуру данных.
Вы также можете отказаться от этой идеи и написать свой собственный. Сложно создать собственную точку и многоугольник для сферических координат и делать все с учетом этой системы координат с самого начала. Лучшая абстракция, меньше угадывание для клиентов. Ваша попытка повторно использовать java.awt.Polygon замечательна, но не нужна.
Вы можете легко вычислить площадь, преобразуя ее в контурный интеграл и используя гауссову квадратуру для интегрирования вдоль каждого граничного сегмента прямой линии. Вы можете даже включить кривизну каждого сегмента в каждой точке интеграции, так как вы знаете формулу.
Исходя из моей интуиции здесь.
Если полигоны малы по отношению к размеру планеты, вы можете рассматривать их как плоские полигоны. Принятые этапы заключались бы в преобразовании lat/long в абсолютный x/y/z, взяв любые три точки и найдя нормаль плоскости, на которой лежат многоугольники, а затем используя это, чтобы спроецировать точки на два измерения. Когда у вас есть 2D-точки, легко вычислить площадь или пересечь их.
Наверное, это не лучший ответ, но, надеюсь, это побудит некоторых людей сделать лучше, потому что это хороший вопрос.
Возможно, вы можете использовать GeoTools. Это позволяет создавать объекты геометрии и проверять, пересекаются ли они (see: Geometry Relationships)
Исправлено, спасибо Дэйву! – Jack
Почему бы не использовать Polygon
класс, умножающий координаты на 10^n, делая их целыми?Polygon
принимает массивы int как точки.
Просто идея
- 1. SQL Geography Polygon lat longs exception
- 2. Как использовать класс javas javascript для Android?
- 3. Как обратный-GeoCode массив Lat/Longs
- 4. Дано Lat/Lng get polygon
- 5. Преобразование Lat/Longs в координаты X/Y
- 6. MaxMind GeoIP City Returning Неправильный Lat Longs
- 7. Окно захвата Lat, Longs with Leaflet
- 8. Convert Lat/Longs to X/Y Координаты
- 9. Clustering Lat/Longs в базе данных
- 10. Формула расстояния между двумя Lat/Longs Autoit?
- 11. .NET класс Polygon
- 12. Redis Geo - возвращает неверное расстояние между двумя местами/lat-longs
- 13. Эффективное обнаружение расстояния между 2 lat/longs в SQL
- 14. Задание lat, longs в google-картах из массива
- 15. Найти ближайший матч Latitude & Longitude в списке Lat/Longs python
- 16. Как найти окрестности для lat/lon в polygon data php
- 17. Расстояние между Lat/Long и ближайшим краем многоугольника, состоящего из Lat/Longs?
- 18. Класс Polygon с использованием класса STD Вектор
- 19. jogl, polygon как собственный объект/класс
- 20. Polygon complete не может показать lat long value for v3
- 21. TSQL География пространственных данные Polygon Lat/Long Поиск
- 22. Gmaps4rails Polygon
- 23. Как легко генерировать longs с помощью scalacheck?
- 24. Как работает Javas KeyManagerFactory.init с несколькими ключами
- 25. Как проверить, пересекает ли Polygon Polygon. (Java)
- 26. Как использовать `polygon()` в шкале журнала?
- 27. Класс объектов Polygon не отображается после создания
- 28. Polygon Внутри Другой Polygon
- 29. PHP-эквивалент JAVAs HexUtils.bytesToHex()
- 30. Google maps Polygon question
Если широты/долготы (или, если координаты вернулись из сферических к прямоугольным) хранили в многоугольнике, вычисление площади потерпит неудачу иногда из-за переменные циклы. – CiscoIPPhone
Я не преследую вас здесь. Полигон - это не что иное, как структура данных для двух массивов значений. Соответствующее хранение значений и успех или неудача вычисления области не имеют ничего общего с использованием java.awt.Polygon. Вы можете совершать те же ошибки, если откатываете свой собственный класс. – duffymo
спасибо duffymo, Моя проблема упрощается из-за того, что высота всегда равна нулю, т. Е. Многоугольники находятся на поверхности земли. Мне просто нужно выяснить, как представить латентность или долготу в виде сферической координаты, тогда я могу преобразовать ее в прямоугольную. Вы делаете хороший момент о том, чтобы скопировать мою собственную (или использовать что-то) вместо использования ava.awt.Polygon – Yusuf