Чи впливає трансформація на нову проекцію, а потім назад, на точність даних?


13

У мене є особливий клас (графства Південна Кароліна, такий досить великий географічний район) в державному літаку SC NAD83. Її потрібно перетворити на другу проекцію (NAD83 UTM 17), потім перетворити назад у вихідну. Я буду використовувати інструмент проекту Esri для цього.

Чи може це подвійне перетворення викликати зміщення координат полігонів і на скільки - сантиметрів, метрів, кілометрів?


Через: роздільну здатність перетворення, відмінності роздільної здатності системи координат, роздільну здатність та толерантність зберігання геометрії. Кожна з цих "змінних" є різною. Тож вам потрібно йти читати документацію для кожного.
— GISI

... і якщо ви використовуєте ArcGIS, існує потенційно сотні рівнянь перетворення, перелічених у порядку перетворень найвищої роздільної здатності для просторового домену ваших даних.
— GISI

1
Звичайний результат A -> B -> A '- це A ~ = A', але додавання трансформації даних у суміш може насправді зіпсувати речі, якщо ви зробите це неправильно. Багато що залежить від того, як визначаються посилання на координати (і, отже, усічення в одиницях карт кожної системи координат).
— Вінс

Відповіді:


19

Я не знаю, який двигун проекції використовує ArcGis, але дуже цікаве питання також для proj.4. Тому я спробую протестувати проекційний двигун proj.4 в середовищі GNU-R. Я використовую кути NAD 83 - UTM 17 та EPSG 26917 і відтворюю його 10000 та 1000000 разів рекурсивно та підраховую різницю до початкових значень.

Ось результати:

Здається, що помилка "перепроектування" знаходиться в сантиметровому діапазоні на 10000 циклів.

"LON/LAT differences after  10000  loops"
           DLON          DLAT
1 -2.441464e-07 -1.341807e-07
2  2.441129e-07 -1.341807e-07
3  1.852679e-07 -1.691737e-08
4 -1.853157e-07 -1.691819e-08

"X/Y differences after  10000  loops"
            DX           DY
1 -0.025169783 -0.014338141
2  0.025166375 -0.014338208
3  0.002419045 -0.002016762
4 -0.002419690 -0.002016889

І зростати до помилки в діапазоні метрів, якщо запустити цикл 1000000 разів.

"LON/LAT differences after  1000000  loops"
           DLON          DLAT
1 -2.441464e-05 -1.341845e-05
2  2.441128e-05 -1.341846e-05
3  1.852621e-05 -1.691837e-06
4 -1.853105e-05 -1.691828e-06

"X/Y differences after  1000000  loops"
          DX         DY
1 -2.5172288 -1.4339977
2  2.5168869 -1.4340064
3  0.2419201 -0.2017070
4 -0.2419859 -0.2017094

Ось сценарій.

# load the package
require('proj4')

# the LON/LAT frame of NAD83 UTM 17 
lon = c(-84.00, -78.00, -84.00, -78.00 ) 
lat = c( 24.00,  24.00,  83.00,  83.00)

# build the projection conform object
ll0 = matrix(c(lon,lat),nrow=4,ncol=2)
xy0 = project(ll0,"+init=epsg:26917",ellps.default='GRS80')

# make a copy
ll1 = ll0
xy1 = xy0

# number of iterations
num = 1000000

# reproject the stuff num times
for(i in 1:num) {
 # project forward  
 xy1 = project(ll1,"+init=epsg:26917", ellps.default='GRS80')
 # project backward
 ll1 = project(xy1,"+init=epsg:26917", inverse=T, ellps.default='GRS80')
}

# build difference table ll
dll = as.data.frame(ll1-ll0)
names(dll) = c('DLON','DLAT')
# print results LON/LAT
print(paste("LON/LAT differences after ", num," loops"))
print(dll)

# build difference table xy
dxy = as.data.frame(xy1-xy0)
names(dxy) = c('DX','DY')
# print results X/Y
print(paste("X/Y differences after ", num," loops"))
print(dxy)

Подальші тести в середовищі статистики повинні бути простими. Сценарії та пояснення коду для середовища Linux доступні на веб- сайті github.com/bigopensky .


Це ще більш ретельно, ніж я сподівався, і дуже обнадійливо. Дякую за тест та за приклад скрипта, який тиражував його моїми власними даними!
— Еріка

Чи можете ви включити, що ви маєте на увазі під кутами NAD83 UTM? Якщо вони знаходяться в крайній зоні (наприклад, велика широта), використання точок у США, ймовірно, дасть ще кращі результати.
— mkennedy

Я припускаю, що межі WGS84, що постачаються разом з EPSG 26917 за адресою пространстваrereference.org/ref/epsg/nad83-utm-zone- 17n .., WGS84 Bounds: -84.0000, 24.0000, -78.0000, 83.0000є правильним регіоном, що цікавить. Чи помилився я?
— huckfinn

@huckfinn Да, я мав би бачити значення в коді! Вибачте за дурне запитання. Великі значення для узагальненої відповіді про UTM.
— mkennedy

7

Esri має власний двигун проекції.

Більшість методів проекцій та географічних / даткових перетворень добре поводяться при використанні у відповідній зоні, що цікавить. Якщо ви надто далеко за межами зони UTM, поперечний Меркатор не завжди точно «обертається» (перетворюється на широту-довготу). Прогнози, що використовуються для всього світу, можуть мати деякі проблеми на полюсах або навколо них, або на меридіані +/- 180 або на "анти-меридіані" (меридіан, що знаходиться навпроти центру проектованої системи координат).

Я пробіг 4 бали, які випадають за межами Південної Кароліни через двигун проекції Есрі. Для стресового тесту в 1k або 10k або 1M балів, мені доведеться щось кодувати, оскільки мій існуючий аналогічний тест просто робить "туди-назад" - прогнозовану на географічну до прогнозованої. 32133 - це штатний літак NAD 1983, Південна Кароліна (метри). 26917 - зона NAD 1983 р. UTM 17 Північ.

C:\Users\melita>inverse 32133
382000 20000
      -83.40806392522212        31.98974518135408
382000 383000
      -83.50098893136905        35.26180827475587
839100 20000
      -78.57184097446545        31.98934439195045
839100 383000
      -78.47814111839074        35.26139222680582

C:\Users\melita>forward 26917
  -83.40806392522212        31.98974518135408
       272490.5730967618        3541832.738731374
  -83.50098893136905        35.26180827475587
       272485.6257057797         3904944.98998655
  -78.57184097446545        31.98934439195045
       729409.4734382738        3541830.781689366
  -78.47814111839074        35.26139222680582
       729414.4926270114        3904946.919009762

C:\Users\melita>inverse 26917
 272490.5730967618        3541832.738731374
      -83.40806392522212        31.98974518135408
  272485.6257057797         3904944.98998655
      -83.50098893136905        35.26180827475587
  729409.4734382738        3541830.781689366
      -78.57184097446545        31.98934439195045
  729414.4926270114        3904946.919009762
      -78.47814111839074        35.26139222680582
^Z

C:\Users\melita>forward 32133
  -83.40806392522212        31.98974518135408
                382000.0                  20000.0
  -83.50098893136905        35.26180827475587
                382000.0                 383000.0
  -78.57184097446545        31.98934439195045
                839100.0        19999.99999999814
  -78.47814111839074        35.26139222680582
                839100.0        382999.9999999981

Тож ви бачите, що у нас було два пункти, які повернулися о 10е 09.

Поводження в ArcGIS ускладнюється тим, що існує просторова довідка. Просторова довідка включає систему координат плюс деякі значення зберігання та аналізу. За замовчуванням системи координат, які використовують лічильники, зберігаються з точністю до десятої частини міліметра, 0,0001.

Розкриття: Я працюю на Есрі.


5

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

Порівняйте значення XY початкових точок з тими, які ви проектували / трансформували (хоча багато разів), і ви оціните різницю.


1
Погодьтеся. Також пам’ятайте, що ArcGIS відображає за замовчуванням 6 десяткових знаків подвійного типу даних у Табличному поданні. Ви можете змінити властивості поля для відображення у таблиці 12 знаків після коми. Географічні значення xy, як правило, становлять 9 знаків після коми, подвійна точність.
— klewis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.