Где я могу найти координаты, необходимые для рисования США в проекции Меркатора?
-
21-09-2019 - |
Вопрос
Итак, я пишу библиотеку Javascript, которая принимает координаты x,y и использует их для рисования карты США.Для этого мне нужно найти данные координат, необходимые для рисования каждого состояния.Эта карта в Википедии — отличный пример того, что мне нужно, потому что файл SVG содержит красиво обозначенные фигуры, составляющие каждое состояние: http://upload.wikimedia.org/wikipedia/commons/3/32/Blank_US_Map.svg
У меня также есть набор объектов, которые мне нужно разместить на этой карте.Поскольку я знаю широту и долготу каждого участка, я могу использовать их, чтобы нарисовать каждый участок в соответствующем месте на карте.К сожалению, для того, чтобы это работало, моя карта должна использовать проекцию Меркатора, чтобы можно было легко сопоставить координаты широты, долготы и координат x,y пикселей.
Карта Википедии, о которой я упоминал выше, использует какую-то другую проекцию, поэтому я не могу использовать ее для этой цели.Кто-нибудь знает, где я могу найти этот тип картографических данных в проекции Меркатора?Любой формат данных подойдет, если я могу программно получить координаты, которые используются для рисования каждого состояния, и определить, какие фигуры составляют каждое состояние.
Решение
Кевин МакКерли создал некоторые карты Соединенных Штатов, включая карту все 50 штатов, в проекции Меркатора.Если вы посмотрите на источник этой последней ссылки, то увидите, что он состоит из пар (широта, долгота) для контуров штатов, которые затем преобразуются в пары (x, y) для отображения в формате svg.Его разрешенное использование
Не стесняйтесь использовать эти файлы в своем собственном веселье, но я был бы признателен за получение кредита за создание их.Наслаждаться...
Я не знаю, достаточно ли это для тебя.
Другие советы
Это вопрос ГИС, и его нелегко решить, если вы не используете подходящие инструменты.
Использовать QGIS открыть Данные шейп-файла США
РЕДАКТИРОВАТЬ В случае, если шейп-файлы, на которые я ссылаюсь, не совсем те, которые вы искали, введите в Google «шейп-файлы для США».Шейп-файлы на самом деле представляют собой группу геопространственных объектов (а не один файл).
Перепроецируйте слой в указанную проекцию
РЕДАКТИРОВАТЬ это может быть хлопотно, но на всякий случай ogr (см. ниже) не сможет перепроецировать.EPSG получены из пространственная привязка
- Использовать ogr2ogr (шпаргалка) или плагин конвертера для преобразования ваших данных в KML.Это выведет ваши данные в удобочитаемом формате Google Maps/Earth/Human, в котором будут содержаться координаты.
РЕДАКТИРОВАТЬ 2Что вы используете для отображения онлайн-карт?ты рассмотрел открытые слои или API карт Google или картографический сервер
РЕДАКТИРОВАТЬ 3Я протестировал свой метод на некоторых имеющихся у меня данных, и он работает. Вот пример вывода для одного полигона с использованием слоя «Состояние и эквивалент (текущий)»:
<Placemark>
<name>American Samoa</name>
<styleUrl>#PolyStyle00</styleUrl>
<Snippet></Snippet>
<MultiGeometry>
<Polygon>
<tessellate>1</tessellate>
<extrude>0</extrude>
<altitudeMode>clampToGround</altitudeMode>
<outerBoundaryIs><LinearRing><coordinates> -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000100,0.000000 -0.001536,-0.000100,0.000000 -0.001536,-0.000100,0.000000 -0.001536,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000100,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001537,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000 -0.001536,-0.000099,0.000000</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
Новая карта с нуля.
Легко создать карту из бесплатного шейп-файл который предоставлено Геологической службой США в довольно высоком разрешении.Вообще-то какой-то парень уже создал шейп-файл->скрипт перевода SVG это именно то, что вам нужно, но учтите, что проект перенесен на GitHub.
К сожалению, шейп-файл находится в папке Проекция НАД83 поэтому его необходимо перепроецировать в Меркатор, прежде чем запускать сценарий.Опять же, это уже решенная проблема и очень распространенная вещь в ГИС и это нужно сделать только один раз.Для этого я собираюсь предложить КартаОкно потому что это тривиально сделать.
Чтобы перепроецировать шейп-файлы в Mercator, вам необходимо скачать и установить КартаОкно.Запустив программу, вы увидите Плагины меню в главном окне, и вам нужно будет включить ГИС-инструменты плагин.Затем вы нажимаете зеленый символ «плюс», чтобы добавить шейп-файл в MapWindow, и он должен отобразить США на экране.
Импортировав шейп-файл в MapWindow, вы собираетесь его перепроецировать.Для этого нажмите на кнопку ГИС-инструменты -> Вектор -> Перепроектирование шейп-файла и должно открыться диалоговое окно.
В первом диалоговом окне, которое вы видите, спрашивается, какую проекцию вы хотите:
- Категория: Проекционные системы координат
- Группа: Мир
- Имя: Меркатор (мир)
Второй может не появиться, но если и появится, то спросит о текущей проекции:
- Категория: Географические системы координат
- Группа: Северная Америка
- Имя: Североамериканский датум 1983 г.
Этот процесс должен создать новый шейп-файл с именем Statesp020_reprojected или что-то вроде того.
Теперь вам нужно перевести shpaefile в SVG используя скрипт выше.Я не буду заморачиваться с написанием инструкций по этому поводу, потому что раньше не пробовал, но я уверен, что вы справитесь!
Здесь: http://www.nws.noaa.gov/geodata/catalog/national/html/us_state.htm
вы можете скачать shp
файл с данными.А shape
формат включает в себя dbf
с некоторыми атрибутами, включая координаты каждого штата.
Кроме того, вы можете использовать shp2text чтобы извлечь всю информацию.
Редактировать:Данные на карте находятся в Североамериканский датум 1983 года., но вы можете использовать Таблица и формулы здесь конвертировать в Меркатор (UTM).
Вы смотрели продукцию NIMA? http://egsc.usgs.gov/nimamaps/ и https://www1.nga.mil/ProductsServices/Pages/default.aspx У них есть множество карт, форматов и т. д.и все это оплачено нами, налогоплательщиками, поэтому очень многое доступно публике.Хорошая первая остановка для карт.
Я никогда не занимался той работой, о которой вы спрашиваете, но мне кажется, что эти данные Инженерного корпуса армии США будут вам полезны:
На сайте visokio.com можно загрузить коллекции векторных карт: http://www.visokio.com/mapsбольшинство из них поддерживают десятичные координаты широты и долготы.
однако похоже, что все они имеют собственный формат, доступный для просмотра только с помощью их собственного программного обеспечения.Тем не менее, доступна пробная версия программного обеспечения.
хт.
редактировать:наткнулся на них, просматривая Википедию:
Вот ответ stackoverflow с математическими вычислениями JS от широты до меркатора.
Преобразование широты/долготы в координаты X/Y
загрузите один из этих шейп-файлов, перечисленных выше, а затем используйте OGR, чтобы выполнить ogr2ogr для преобразования в CSV.
получить OGR здесь
http://www.gdal.org/ogr/index.html
Вот документ для OGR
http://www.gdal.org/ogr2ogr.html
Вот название выходных форматов
http://www.gdal.org/ogr/ogr_formats.html
Учитывая вашу репутацию, я знаю, что вы справитесь с этим, как только перенесете его в CSV.
Индипроектор должен иметь возможность генерировать нужные вам файлы.Это бесплатный онлайн-инструмент, который перепроецирует любой шейп-файл и снова экспортирует его в .svg.У них даже есть штаты США, включенные в сеть, так что вам не придется возиться с шейп-файлом.