Как масштабировать / Выбрать параметры проекции D3 из.shp файл


Я следую примеру Майка Бостока по созданию проекции geoJSON путем загрузки и преобразования шейп-файлов в geoJSON. Я правильно загрузил файлы, и они находятся в сети здесь:

Https://bl.ocks.org/KingOfCramers/2c5ceb2e7526a8370d6926958654cf21

Это прекрасно работает (очевидно, в будущем я упрошу файл формы, чтобы он быстрее работал в браузере). Прямо сейчас я хочу иметь возможность быстро воспроизвести этот процесс для других шейп-файлов. Я скачал многие из Natural Earth и успешно преобразовал их в файлы JSON для использования в geoJSON и topoJSON, но я не уверен, как определить, какую проекцию использовать на них.

Есть ли способ быстро изучить А.shp-файл (или после того, как он был преобразован в JSON), чтобы определить, какую проекцию D3 использовать, какие значения "translate" использовать и любые другие пресеты для моей проекции? Или, если я собираюсь использовать geoproject до даже отображения файла, как я могу найти значения для подключения? Вот пример Майка Бостока:

geoproject 'd3.geoConicEqualArea().parallels([34, 40.5]).rotate([120, 0]).fitSize([960, 960], d)' < ca.json > ca-albers.json

Откуда он знает значение поворота? Как он узнает, какие параметры нужно ввести в эту функцию?

Для незаконченного примера, вот мой bl.ock текущей земли, но проекция нарушает JSON, потому что, очевидно, Мои настройки проекции не верны:

Http://blockbuilder.org/KingOfCramers/16be1bf014683572086511c6a8bd7470

-- или --

Https://bl.ocks.org/KingOfCramers/16be1bf014683572086511c6a8bd7470

Введите описание изображения здесь Я могу поместить этот файл JSON в mapshaper, который проецирует его быстро и безупречно. Я хочу иметь возможность сделать это в D3 или, по крайней мере, преобразовать файл перед его отображением. Я предполагаю, что информация хранится где-то в файле JSON? Или можно получить доступ каким-то образом с помощью проекционного преобразователя JSON, который рекомендует Майк Босток, geoproject? Спасибо за любую помощь, которую вы можете обеспечьте!

1 2

1 ответ:

Ключевой Вопрос

D3 предполагает, что файл для проецирования требует проецирования , то есть он предполагает, что файл еще не был проецирован. Это применимо, если предварительное проецирование файлов из команды лежит так, что вы можете отобразить их без проекции d3. Если вы используете проецируемые объекты, вы не получите желаемых результатов - сначала вы должны отменить проецирование объектов.

Если используется стандартная проекция d3, например d3.геоальберы, данные должны быть непроецированными и содержат пары широта долгота.

Неспроектированным против прогнозируемых

Непроецированные объекты-это те, которые имеют координаты широты и долготы, это точки, расположенные на трехмерном глобусе. Для их отображения нам нужна функция проецирования (проще всего: lat = y, long = x, проекция пластины carree). Проектируемые объекты-это объекты,имеющие декартовы координаты x, Y. Они являются продуктом некоторой проекционной функции, которая, как следствие, вводит искажение некоторых или всех: формы, площади, расстояния или направления.

Признаки использования проекционных данных

Перевернутые Функции

Перевернутые объекты-это простой индикатор того, что ваши объекты уже проецируются. Проецируемые географические данные, как правило, объекты и происхождение в левом нижнем углу объектов, при движении на север значения y увеличиваются. СВГ координат наоборот, по мере продвижения на юг по оси Y увеличивается.

Когда отображение данных в mapshaper, если вы включаете шейп-файлы .prj файл, mapshaper будет проецировать ваши данные в соответствии с этим. Это гарантирует, что Север-это правда. При отображении этих данных с помощью d3 нет никакого сальто по оси y, если вы не запекаете его в функцию проекции.

Файл Проекции

Во-вторых, файл prj, который поставляется с каждым шейп-файлом (или подавляющим большинством), сообщит вам, проецируются ли объекты или нет. Если ваш файл prj содержит что-либо подобное Альберс, Коник и т. д., то у вас есть спроецированные данные. Вы должны иметь ваши данные "прогнозируемые" использование координат WGS84 или проекционной (также используя координатную систему WGS84). Данные, использующие это координатное пространство, имеют номер EPSG 4326, и файл prj должен выглядеть примерно так:
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

Координатная Область

Наконец, если в mapshaper (или любой другой ГИС-утилите, которая обрабатывает geojson) вы должны были экспортировать данные как geojson, если вы видите координаты, превышающие [+/-180,+/-90], вы, вероятно, имеете дело с прогнозируемые данные, которые часто используют единицы измерения, такие как метры.

Если вы включаете файл и функцию проекции, я могу предоставить некоторые более конкретные признаки, а не эти обобщения.

Простое Решение

Если вы не хотите изменять проекцию, в которую вошли данные, вы можете использовать проекцию идентичности:

d3.geoIdentity().reflectY(true).fitSize([w, h], geojson)

Это не изменит входную проекцию, по существу, это только масштабирование и переключение входных объектов в соответствии с вашим назначением svg / размеры холста.

Недостатком является то, что вы не можете взять объекты, которые уже проецируются как равная Альберсу площадь, и преобразовать их прямо в азимутальную равноудаленную проекцию. Кроме того, этот подход может затруднить наложение местоположений с географическими координатами поверх ваших предварительно спроецированных объектов-для этого вам нужно будет воссоздать проекцию, в которой первоначально появились объекты.

Плюсом является простота, она хороша для хороплетов или визуализаций, где на проецируемые объекты не накладывается ничего географического.

Более Гибкое Решение

Сначала распакуйте ваши данные, в mapshaper вы можете сделать это, предположив, что вы импортировали файлы prj с помощью окна консоли и набрали:

proj wgs84

Теперь можно перепроецировать или предпроектная для Д3. Существуют и другие инструменты для командной строки, в то время как такие программы, как QGIS, также могут помочь быстро конвертировать данные.

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

Какие Параметры Проекта Выбрать

Если следовать 2-му подходу или накладывать географические координаты поверх объектов, отображаемых с помощью 1-го подхода, вопрос о том, какие параметры проекции выбрать, снова становится актуальным.

Выбранные параметры проекции выбраны очень специфически и часто взяты прямо из стандарта составление прогнозов. То.файл prj шейп-файла содержит все необходимое для повторного создания проекции, используемой в шейп-файле. Этотответ относится к тому, как эмулировать файл prj с проекцией d3.

SpatialReference.org является отличным справочником для нахождения параметров в различных проекциях. Есть хороший шанс, что пример Калифорнийского Альберса был основан на стандартной проекции, которую вы можете найти на этом сайте, вероятно, этот. Хотя, конечно, когда Майк Босток использовал эту проекцию, он применил ее к непроецированным данным.