Геометрия США и России, извлеченная из Bigquery, имеет визуальное искажение - PullRequest
1 голос
/ 22 апреля 2020

Я использую этот запрос для извлечения геометрии всех стран, используя набор данных BigQuery c, см. Вопрос здесь

как извлечь геометрию всех стран из набора данных Openstreet map в BigQuery

Я использую R, чтобы нарисовать результаты enter image description here Я попробовал Kepler.GL и дал мне те же результаты enter image description here

Что-то не так с россией и сша

1 Ответ

1 голос
/ 28 апреля 2020

Я мало знаю о визуализации R, но, вероятно, происходит то, что вы получаете текст WKT из BigQuery и передаёте его в R, что имеет другие предположения.

Проблема в том, что ваш пакет R, вероятно, относится к WKT по-разному чем BigQuery. Семантика WKT зависит от используемой системы пространственной привязки (SRS), которая может быть географической c (без проекции, с использованием сферы или эллипсоида) или с проекцией (плоская карта). BigQuery использует систему geographi c, поэтому край между точками A и B является кратчайшим путем геодезии c. Большинство систем визуализации используют проецируемые координаты и предполагают плоскую карту. Край между А и В - самая короткая прямая линия на плоской карте.

Хотя во многих случаях это не имеет большого значения, оно все же влияет на точность при наличии длинных краев. Но когда ребро пересекает анти-меридиан (180-градусный меридиан), вы получаете большую проблему. Граница между (-169, 66) (восточный край России) и, скажем, (176, 70) (близлежащая точка на Чукотском море) относительно короткая на сфере, она пересекает антимеридиан и простирается на 15 градусов по долготе. Но тот же край на плоской карте охватывает 145 градусов долготы и пересекает большую часть карты! Это длинные почти горизонтальные линии, которые вы видите.

Что делать?

  • Если R имеет пакет, который поддерживает географию c SRS (иногда есть возможность использовать ребра геодезии c), вы можете попробовать его.
  • Или вы также можете позволить BigQuery преобразовывать географию из географических данных c SRS в плоскую карту, которую R будет понимать, используя функцию ST_AsGeoJson. Geo Json определен на плоской карте, поэтому BigQuery ST_AsGeoJson преобразует семантику из географического c SRS в плоскую карту SRS. Затем вы визуализируете строку Geo Json вместо строки WKT в R.

ST_AsGeoJson выполняет большую работу, чтобы сделать результат соответствующим Geo Json spe c и плоской карте. Он разделяет части географии, расположенные к востоку и западу от анти-меридиана, поэтому вы не получите границ, которые пересекают его. Он также аппроксимирует ребра геодезии c с плоскими ребрами карты. Но это делает систему визуализации намного проще.

...