Как нарисовать точки в полилинии ESRI, учитывая ограничивающую коробку как Lat / Long и «точки» в качестве радианов?

StackOverflow https://stackoverflow.com/questions/2794290

Вопрос

Я использую OpenDAP, и я читаю Sharpfile с помощью COM.BBN.OpenMap.layer.shape.shapeFile. Ограниченная коробка читается в качестве LAT / длинных точек, например 39.583642, -104.895486. Ограниченная коробка - нижняя левая точка, а верхняя правая точка, которая представляет, где содержатся точки. «Очки», которые называются «радианами» в OpenDMAP, находятся в другом формате, что выглядит так: [0.69086486, -1.8307719, 0.6908546, -1.8307716, 0.6908518, -1.8307717, 0.69085056, -1.8307722, 0.69084936, -1.8307728 , 0,6908477, -1.8307738, 0.69084626, -1.8307749, 0,69084185, -1.8307792].

Как связать точки, такие как «0.69086486, -1.8307719» в координаты X, Y, которые полезны в обычной графике?

Я считаю, что все, что нужно, - это какой-то конвертация, потому что принося точки в Excel и графики их создает линию, кривая которой соответствует кривой дороги в данном месте (LAT / LONG). Тем не менее, оси необходимо регулировать вручную, и у меня нет ссылки, как о том, как отрегулировать оси, поскольку данная ограничивающая коробка, по-видимому, находится в другом формате, чем данные точки.

Техническое описание ESRI Sharpfile, похоже, не упоминается об этом (http://www.esri.com/library/whightepapers/pdfs/shapefile.pdf.).

Это было полезно?

Решение

0.69086486, -1.8307719 это широта и долгота в радианах.

Во-первых, преобразуйте в градусы (умножьте на (180 / PI)), то у вас будут общие единицы между вашей ограничительной коробкой и координатами.

Затем вы можете построить все это в локальной каркасе со следующими:

x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)

(Latittude0, JongitudeT0) являются координатами контрольной точки (например, нижний левый угол ограничительной коробки) градусы для углов и метры для расстояний

Редактировать - Объяснение: Это орфографическая проекция Земли, рассматриваемая как сфера, радиус которой составляет 6378137,0 м (полузащитная ось эллипсоида WGS84), сосредоточенная на точке (LAT0, LON0)

Другие советы

В OpenDMAP есть ряд способов преобразования от радианов до десятичных градусов:

Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal)  // Standard java library

Для массива вы можете использовать Projmath.arraydegtorad (Double [] Radvals);

Будьте осторожны с этим последним, он делает преобразование на месте. Поэтому, если вы захватите массив LAT / LON из OMPoly, сначала сделайте копию его, прежде чем преобразовать ее. В противном случае вы столкнетесь со внутренними координатами OMPoly, которые ожидают быть в радианах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top