Більше

Як перетворити дані зі спеціальної проекції в СТС?


У мене є деякі дані в NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet

Я хочу програмно перетворити координати на довжину ширини в базовій даті WGS84 за допомогою JTS.

Я знаю, що СТС може трансформувати координати за допомогою такого коду:

імпортувати org.geotools.geometry.jts.JTS; імпортувати org.geotools.referencing.CRS; CoordinateReferenceSystem sourceCRS = CRS.decode ("EPSG: 4326"); CoordinateReferenceSystem targetCRS = CRS.decode ("EPSG: 23032"); Перетворення MathTransform = CRS.findMathTransform (sourceCRS, targetCRS); Геометрія targetGeometry = JTS.transform (sourceGeometry, перетворення);

Але моя проекція не має коду EPSG.

Як визначити систему координат у цьому випадку? Як перетворити свої дані на EPSG: 3857?


Перегляньте цю документацію CRS http://docs.geotools.org/latest/userguide/library/referencing/crs.html#well-known-text

Можна встановити CRS з WKT. У документації сказано:

Систему CoordinateReferenceSystem також можна визначити за допомогою текстового формату ((так званий "Добре відомий текст" або WKT). Це стандарт, наданий OGC, і відображається у файлі шейп -файлу "prj" або в таких базах даних, як PostGIS та Oracle .

Для розбору WKT, будь ласка, скористайтеся методом CRS.parseWKT (txt).

Можна отримати WKT з файлу PRJ або навіть з http://spatialreference.org/ref/sr-org/nad_1983_stateplane_texas_central_fips_4203_feet/ogcwkt/

Після того, як CRS встановлено з WKT, решта процесу буде такою, як вона була.


1 Відповідь 1

Схоже, проблема в обох ваших функціях vectorToGeogr та spherical2vector. Виходячи з коментарів у цих коментарях та полюсу, по якому ви оберталися, виглядає (?), Ніби ви збираєтесь мати такі стосунки:

Однак ви змішували математику в місцях, де передбачалися математичні координати:

Швидкий, але не надійний тест-спробувати "відключити" будь-які функції перетворення координат. Це не гарантує правильності того, що ви робите, але гарантує, що це внутрішньо послідовно. Ваша поточна версія речей не проходить цей тест:

Окрім того, я настійно рекомендую отримати хоча б кілька тестів та запустити їх та використати якийсь тестовий бігун (py.test - мій улюблений). Це збереже вам багато болю в довгостроковій перспективі!

Особисто я вважаю за краще відокремлювати "реальний" декартовий простір від декартового простору, який використовується в стереомережі.

Це спрощує математику, а перетворення між реальним простором та простором "стереонет" відбувається прямо (наприклад, див. Функції mplstereonet.xyz2stereonet та mplstereonet.stereonet2xyz. Обидві вони є у файлі, з яким ви пов’язали.). У всіх прикладах у stereonet_math.py використовується другий набір умов. Коли вам потрібно мати справу з "реальними" векторами (наприклад, приклад contour_normal_vectors.py), їх можна перетворити або за допомогою xyz2stereonet (виводить lon, lat) або однією з різних функцій normal2 & ltfoo & gt (виводи поглинання/підшипник, удар/падіння, тощо).

Однак, якщо ви все-таки хочете всередині використовувати декартові координати "реального світу", вам доведеться змінити функції перетворення.


Методи географічної трансформації

Переміщення даних між системами координат іноді включає трансформацію між географічними системами координат.

Оскільки географічні системи координат містять точки, засновані на сфероїдах, географічне перетворення також змінює основний сфероїд. Існує кілька методів, які мають різні рівні точності та діапазонів, для перетворення між даними. Точність певного перетворення може коливатися від сантиметрів до метрів залежно від методу, якості та кількості контрольних точок, доступних для визначення параметрів перетворення.

Географічна трансформація завжди визначається в певному напрямку. На малюнку вище показано трансформацію, яка перетворюється з північноамериканської дати (NAD) 1927 р. У Всесвітню геодезичну систему (WGS) 1984 р. Під час роботи з географічними перетвореннями, якщо не згадується напрямок, програма чи інструмент, наприклад ArcMap, оброблятимуть спрямованість. автоматично. Наприклад, якщо конвертувати дані з WGS 1984 у NAD 1927, ви можете вибрати трансформацію під назвою NAD_1927_to_WGS_1984_3, і програмне забезпечення застосує її правильно.

(ArcMap автоматично завантажує одну географічну трансформацію. Він розрахований на нижчі 48 штатів Сполучених Штатів і конвертує між NAD 1927 та NAD 1983.)

Поширеною трансформацією даних Північної Америки є період між NAD 1983 та WGS 1984, наприклад, між географічними системами координат GCS_North_American_1983 та GCS_WGS_1984. Див. Статтю 24159 служби підтримки ESRI, щоб отримати поради щодо того, як визначити, яку трансформацію використовувати між NAD 1983 та WGS 1984.

Географічне перетворення завжди перетворює географічні (широта – довгота) координати. Деякі методи перетворюють географічні координати в геоцентричні (X, Y, Z) координати, перетворюють координати X, Y, Z і перетворюють нові значення назад у географічні координати.

До них відносяться методи геоцентричного перекладу, Молоденського та методу координат.

Інші методи, такі як NADCON та NTv2, використовують сітку відмінностей і безпосередньо перетворюють значення довготи та широти.


Огляд набору інструментів Raster

У наведеній нижче таблиці узагальнено інструменти набору інструментів "Растр" (набір інструментів у наборі інструментів "Проекції та трансформації"). Ці інструменти призначені для проектування та перетворення растрів.

Переорієнтує растр, перевернувши його зверху вниз по горизонтальній осі через центр растра. Це може бути корисним для виправлення наборів растрових даних, які перевернуті.

Переорієнтує растр, перевернувши його зліва направо вздовж вертикальної осі через центр растра.

Перетворює набір растрових даних з однієї системи координат в іншу.

Автоматично вирівнює растр до еталонного зображення або використовує файл контрольної точки для геореєстрації. Якщо вхідним набором даних є набір даних мозаїки, інструмент працюватиме з кожним елементом набору даних мозаїки. Щоб автоматично зареєструвати зображення, вхідний растр і опорний растр повинні знаходитися у відносно близькій географічній зоні. Інструмент буде працювати швидше, якщо набори растрових даних будуть тісно вирівняні. Можливо, вам доведеться створити файл посилань, також відомий як файл контрольної точки, з кількома посиланнями, щоб ваш растр введення потрапив у той самий простір карти.

Змінює розмір растра за вказаними коефіцієнтами масштабування x та y.

Перетворює набір растрових даних навколо вказаної точки зведення.

Переміщує (ковзає) растр на нове географічне місце на основі значень зсуву x та y. Цей інструмент корисний, якщо ваш набір растрових даних потрібно змінити, щоб вирівняти з іншим файлом даних.

Перетворює набір растрових даних за допомогою вихідних та цільових контрольних точок. Це схоже на геореференціювання.

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


5 відповідей 5

Нещодавно я зіткнувся з цією проблемою (я також використовував ARToolKit), і я був дуже розчарований, побачивши, що ви не зрозуміли відповіді. Я уявляю, що ви пішли далі, але я зрозумів це і надсилаю це для будь -якої іншої втраченої душі, яка може зіткнутися з цією ж проблемою.

Найбільш заплутаним для мене було те, що всі говорять про те, щоб перетворити перспективу CALayer шляхом встановлення змінної m34 на невелике від’ємне число. Хоча це і працює, це зовсім не дуже інформативно. Зрештою я зрозумів, що перетворення працює так само, як і будь -яке інше перетворення, це матриця основних перетворень стовпців для однорідних координат. Єдиний особливий випадок - він повинен поєднувати матриці перегляду моделі та проекції, а потім масштабувати до розміру вікна перегляду openGL все в одній матриці. Я почав зі спроби використати матрицю в стилі, де m34 - це невелике від’ємне число, як пояснюється тут набагато детальніше, але врешті -решт я перейшов на відкриті перетворення перспективи стилю GL, як пояснюється тут. Вони насправді еквівалентні один одному, вони просто представляють різні способи мислення про перетворення.

У нашому випадку ми намагаємось зробити так, щоб трансформація CALayer точно повторювала відкрите GL -перетворення. Все, що потрібно - це помножити разом матриці перегляду моделі, проекції та масштабування та перевернути вісь y, щоб врахувати той факт, що початок екрану пристрою - зверху зліва, а відкритий GL - знизу зліва. Поки якір шару знаходиться в точці (.5, .5) і його положення знаходиться точно в центрі екрана, результат буде ідентичним трансформації відкритого GL

Ця функція приймає відкритий GLprojection та розмір перегляду openGL і використовує їх для створення правильного перетворення для CALayer. Розмір CALayer слід вказувати в одиницях відкритої GL -сцени. Вікно перегляду OpenGL насправді містить 4 змінні, [xoffset, yoffset, x, y], але перші дві не мають значення, оскільки Походження CALayer розміщено у центрі екрана, щоб відповідати OpenGL 3d Origin.

Просто замініть Matrix будь -яким загальним класом основної матриці стовпців 4x4, до якого ви маєте доступ. Все буде працювати, просто переконайтеся, що ви помножили свої матриці у правильному порядку. Все, що по суті робить, - це відтворення конвеєра OpenGL (мінус відсікання).


Як перетворити дані зі спеціальної проекції в СТС? - Геоінформаційні системи

Послуги з перетворення даних географічної інформаційної системи (ГІС)

Заклад географічних інформаційних систем Wynne Unit пропонує повну лінійку послуг з перетворення ГІС. Доступні послуги - від сканування, географічного посилання, оцифрування та очищення даних до завершення проектів перетворення даних ГІС, включаючи проектування, налаштування та заповнення баз даних. Крім того, пропонуються послуги перекладу даних у стандартних форматах. Персонал закладу має багаторічний досвід роботи та пропонує економічно ефективні послуги, які допоможуть клієнтам успішно завершити проекти ГІС.

Зразки пілотних проектів завершуються для кожного проекту перетворення даних для огляду клієнтами. Право власності на перетворені дані залишається за клієнтом, об'єкт не зберігає право власності на дані. Об’єкт використовує найновіше сучасне обладнання та дотримується суворих заходів контролю якості, щоб переконати проекти конверсії задовольняти потреби клієнтів.

Засіб може конвертувати декілька форматів даних у бездоганний продукт ГІС. Різні дані можна інтегрувати на різних платформах, перетворити проекти карти в одну загальну проекцію та виконати перетворення даних та оновлення цих різних наборів даних один щодо одного.

Наші терміни повороту швидкі, а ціни конкурентоспроможні!

Послуги широкоформатного сканування дозволу доступні у кольоровому та монохромному форматі.

Доступні прості географічні прив'язки векторних даних.

Щоб отримати пропозицію, зверніться за номером 936-348-3751 доб. 266.

Перелік задоволених клієнтів включає:

  • Місто Амарілло
  • Міністерство транспорту Техасу
  • Місто Річардсон
  • Оціночний округ Поттера / Рендалла
  • Округ Грейсон
  • Місто Конро
  • Оціночний округ округу Ньютон
  • Місто Хантсвілль
  • Район боротьби з паводками округу Харріс
  • Місто Корсикана
  • Канцелярія Генерального прокурора


Щоб вказати систему координат під час імпорту

  1. Натисніть Керувати вмістом (Джерела даних), щоб відкрити панель Джерела даних.
  2. Імпортуйте дані.
  3. Клацніть правою кнопкою миші імпортовані дані на панелі Джерела даних і виберіть Налаштувати, щоб відкрити діалогове вікно Конфігурація джерела даних.
  4. Виберіть вкладку Географічне розташування.

  1. Система координат джерела: більшість часу InfraWorks може автоматично визначати систему координат джерела на основі атрибутів джерела даних. При необхідності вкажіть у цьому полі систему координат вхідних даних. Ви можете натиснути значок глобуса, щоб переглянути бібліотеку доступних систем координат.
  2. Система координат положення (цілі): це система координат, яку InfraWorks буде використовувати для зберігання та відображення імпортованих даних.
  3. Ви також можете вказати місцеве походження для імпортованих даних. Це корисно, якщо у імпортованому наборі даних не пов’язано жодного файлу світу.

Нанесення графічних характеристик природної Землі на спеціальну проекцію

Я намагаюся зробити деякі ділянки даних морського льоду. Дані передаються у сітці EASE-North, приклад файлу (HDF4) можна завантажити за адресою:

Я створив власний клас проекції для EASE-Grid, здається, він працює (берегові лінії добре узгоджуються з даними).

Коли я намагаюся додати функцію Natural Earth, вона повертає порожню цифру Matplotlib.

Сценарій вище працює нормально і дає такий результат:

Але коли я розкоментую ax.add_feature (land), він виходить з ладу без помилок, повертаючи лише порожню цифру. Я пропускаю щось очевидне?

Моя збірка Cartopy - версія 0.9 з веб -сайту Крістофа Гольке (дякую!).

Спроба зберегти фігуру викликає виняток:

Досліджуючи "land" cartopy.feature, не виявляється проблем, усі полігони проходять через .isvalid (), а всі кільця (ext en int) складаються з 4 або більше кортежів. Отже, форма введення, здається, не є проблемою (і відмінно працює у PlateCaree ()).

Можливо, деякі кільця (наприклад, у південній півкулі) "пошкоджуються" після перетворення на EASE_North?

Редагувати 2:

Коли я видаляю вбудовані функції NE та завантажую той самий шейп-файл (але з обрізаним вмістом нижче 40N), він працює. Тому це виглядає як якесь питання репроектування.


Ваше вихідне коло дійсне, воно просто перевищує діаметр поверхні Землі, тому у вашій ГІС можуть виникнути проблеми з його малюванням! Проблема в тому, що ви без розбору змішуєте градуси та метри, і GeoTools не має уявлення про те, що ви хочете від цього робити.

Вам потрібно додати деяку інформацію про систему координат точки в програму, і якщо ця проекція є географічною (тобто в градусах), перетворіть задачу на проекцію у метрах.

АВТО: 42001, x, y - це спеціальна проекція з центром у точці x, y у метрах, що дозволяє нам використовувати метод буфера JTS, який простіше, ніж операція кола, яку ви використовуєте.

Для ваших вхідних даних це дає мені еліпс над Нью -Йорком, зауважте, що це очікувано і пов'язано з спотворюючими ефектами використання непроектованих координат Lat/Lon на вигнутій Землі.


Вчіться швидше. Копати глибше. Дивіться далі.

Приєднуйтесь до онлайн -платформи навчання O'Reilly. Отримайте безкоштовну пробну версію сьогодні та знайдіть відповіді на льоту або освойте щось нове та корисне.

Увійдіть у систему CARTO та знайдіть у безкоштовній бібліотеці даних набір даних під назвою “ne_50m_admin_1_states”. Додайте його до свого облікового запису або іншим чином завантажте власний набір даних із 50 штатів (див. Малюнок 2). Ми покажемо цей приклад, тому що ви, можливо, захочете змінити проекцію всіх 50 станів або лише кількох, і є способи зробити це в SQL.

Малюнок 2. Перегляд даних штатів США на картах CARTO. (Джерело: Аурелія Мозер)

Ви можете знайти доступні для вас просторові опорні коди, здійснивши пошук у таблиці Ідентифікатор просторової довідкової системи CARTO (SRID), яка дозволяє переглядати всі унікальні ідентифікатори для систем координат з невеликим SQL:

Це надрукує вам довідкову таблицю з усіма кодами SRID, які можна використовувати для скидання проекції на один із ваших функціональних шарів за допомогою функцій PostGIS (див. Малюнок 3).

Малюнок 3. Таблиця SRID CARTO для перегляду доступних проекцій/посилань. (Джерело: Аурелія Мозер)

Якщо ви не бачите певної проекції, перерахованої тут, але хотіли б включити її у свою карту, ви можете знайти правильну проекцію в EPSG.io (див. Малюнок 4). У цьому випадку ми шукали конічну проекцію Альберса з рівною площею, яка підходить для карт Північної Америки.

Малюнок 4. Результат пошуку EPSG 3857. (Джерело: Klokan Tech)

Це створить деякі коди копіювання та вставлення, які можна використовувати для ввімкнення певних проекцій у різноманітних форматах сервера плиток або рендерингу, які ви можете використовувати для розробки карти (див. Малюнок 5).

Малюнок 5. Результат експорту “ESRI: 102008”, код PostGIS (Джерело: Klokan Tech)

Ви можете вставити код PostGIS у трей CARTO SQL і застосувати запит, щоб імпортувати цей SRID та активувати цю проекцію для ваших шарів функцій (див. Малюнок 6).

Малюнок 6. Імпорт просторової посилання в CARTO. (Джерело: Аурелія Мозер)

Потім ви можете застосувати наступний і "простіший" запит, використовуючи синтаксис PostGIS, щоб скинути проекцію шару станів:

У цьому випадку введення 102008 (коніка рівної площі Альберса) як_geom_webmercator гарантує, що відображені дані, за замовчуванням у проекції Web Mercator, будуть перероблені у проекцію Альберса. Ви б поміняли стани (ім’я моєї таблиці даних у цьому прикладі) на будь -яку назву вашої таблиці.

Результат перетворення переміщує Сполучені Штати до центру полотна карти, що суперечить базовій карті на малюнку 7, яка зберегла проекцію за замовчуванням. Ви можете вирішити цю невідповідність, змінивши свою базову карту або використовуючи колір замість базової карти з мітками. Оскільки альтернативного варіанту базової карти для проекції, окрім Web Mercator, немає, підхід на малюнку 7 змушує іншу проекцію перетворювати на координатну площину Web Mercator.

Малюнок 7. Повторне проектування Сполучених Штатів як коніки рівної площі Альберса. (Джерело: Аурелія Мозер)

Після цього ви можете оформити стани білими у майстрі CARTO або у супровідній CartoCSS для вашої карти (Малюнок 8).

Малюнок 8. Зміна фону та стиль США. (Джерело: Аурелія Мозер)

Ви навіть можете піти далі та використати PostGIS для встановлення проекції для окремих станів, вибравши унікальні ідентифікатори для станів та перетворивши геометрію лише цих багатокутників. SQL може бути досить білковим, і його часто оскаржують і переписують практикуючі карти, але SQL -запит Енді Ешбахера, повторений у реалізації на малюнку 9, дає досить приємне перетворення Аляски та Гаваїв у компактну декартову площину.

Малюнок 9. Застосування SQL -запиту для переміщення Аляски та Гаваїв у кадр. (Джерело: Аурелія Мозер)


Подивіться відео: Epson Akıllı Projeksiyon EB 1470ui Kutu Açılımı (Жовтень 2021).