Yeni bir projeksiyona, sonra geri dönüş, veri doğruluğunu etkiler mi?


13

NAD83 SC Devlet Düzleminde bir özellik sınıfı (Güney Carolina ilçeleri, bu yüzden oldukça geniş bir coğrafi bölge) var. İkinci bir projeksiyona (NAD83 UTM 17) dönüştürülmeli, sonra orijinaline geri dönüştürülmelidir. Bunu başarmak için Esri'nin Proje aracını kullanacağım.

Bu ikili dönüşüm, çokgen koordinatlarının konumunda ve kaç santimetre, metre, kilometre kadar bir kaymaya neden olabilir?


Nedeniyle: dönüşüm çözünürlüğü, koordinat sistemi çözünürlük farklılıkları ve geometri depolama çözünürlüğü ve toleransı. Bu "değişkenlerin" her biri farklıdır. Yani her birinin belgelerini okumanız gerekiyor.
GISI

... ve ArcGIS kullanıyorsanız, verilerinizin uzamsal alanı için en yüksek çözünürlük dönüşümleri sırasında listelenen yüzlerce dönüşüm denklemi bulunmaktadır.
GISI

1
A -> B -> A 'dan elde edilen genel sonuç A ~ = A' dır, ancak karışıma veri dönüşümü eklemek yanlış yaparsanız işleri gerçekten bozabilir. Büyük ölçüde koordinat referanslarının nasıl tanımlandığına bağlıdır (ve dolayısıyla her bir koordinat sisteminin harita birimlerindeki kesilme).
Vince

Yanıtlar:


19

ArcGis'in hangi projeksiyon motorunu kullandığını bilmiyorum, ancak projeksiyon için de çok ilginç bir soru. Bu yüzden proj.4 projeksiyon motorunu GNU-R ortamında test etmeye çalışıyorum. NAD 83 - UTM 17 köşelerini ve EPSG 26917'yi kullanıyorum ve tekrar tekrar 10000 ve 1000000 kez yeniden çiziyorum ve başlangıç ​​değerlerine olan farkı hesaplıyorum.

Sonuçlar burada:

Görünüşe göre "yeniden projeksiyon" hatası 10000 döngü için bir santimetre aralığındadır.

"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

Ve döngüyü 1000000 kez çalıştırırsanız bir metre aralığında bir hataya büyütün.

"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

İşte senaryo.

# 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)

İstatistik ortamındaki diğer testler kolay olmalıdır. Linux ortamı için komut dosyaları ve kod açıklaması github.com/bigopensky adresinde bulunabilir .


Bu, umduğumdan çok daha kapsamlı ve çok cesaret verici. Test ve örnek betiği kendi verilerimle çoğaltması için teşekkür ederim !
Erica

NAD83 UTM köşeleri ile ne demek istediğinizi ekleyebilir misiniz? Bölgenin en uç noktalarındalarsa (örneğin yüksek enlem), ABD'de puan kullanmak daha iyi sonuçlar verecektir.
mkennedy

Sanırım, WGS84 sınırlarının spatialreference.org/ref/epsg/nad83-utm-zone-17n .. adresindeki EPSG 26917 ile birlikte gönderilmesi WGS84 Bounds: -84.0000, 24.0000, -78.0000, 83.0000doğru ilgi alanıdır . Bir hata yaptım mı?
huckfinn

@huckfinn Duh, koddaki değerleri görmeliydim! Bu aptal soru için üzgünüm. UTM hakkında genel bir cevap için büyük değerler.
mkennedy

7

Esri'nin kendi projeksiyon motoru var.

Çoğu projeksiyon ve coğrafi / veri dönüşüm yöntemleri uygun bir ilgi alanında kullanıldığında iyi davranır. Bir UTM bölgesinin çok dışına çıkarsanız, enine Mercator her zaman tam olarak 'ters' olmaz (enlem-boylam haline dönüşür). Tüm dünya için kullanılan projeksiyonlarda kutuplar veya +/- 180 meridyen veya 'anti-meridyen' (öngörülen koordinat referans sisteminin merkezinin karşısındaki meridyen) veya çevresinde bazı sorunlar olabilir.

Esri projeksiyon motoruyla Güney Carolina'nın dışına çıkan 4 puan koştum. 1k veya 10k veya 1M'lik bir stres testi için, mevcut benzer testimin sadece coğrafi olarak tahmin edilene yansıtılan bir 'gidiş-dönüş' yaptığı gibi bir şey kodlamam gerekecek. 32133 olduğunu NAD 1983 State Plane Güney Carolina (metre). 26917, NAD 1983 UTM bölgesi 17 Kuzey'dir.

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

Gördüğünüz gibi 10e-09'da iki puanımız var.

ArcGIS'te işlem, mekansal bir referans olması nedeniyle karmaşıktır. Uzamsal referans, koordinat sistemini ve bazı depolama ve analiz değerlerini içerir. Varsayılan olarak, sayaç kullanan koordinat sistemleri 0.0001 milimetrenin onda biri hassasiyetinde saklanır.

Açıklama: Esri için çalışıyorum.


5

Bu, önerilen iş akışınızı XY koordinat alanlarını eklemek kolay olan bazı test noktası özelliklerine karşı test etmeniz gereken bir durum olduğunu düşünüyorum.

Başlangıç ​​noktalarınızın XY değerlerini, öngördüğünüz / dönüştürdüğünüz değerlerle (ancak birçok kez) karşılaştırın ve farkı nicelleştirdiniz.


1
Katılıyorum. Ayrıca, ArcGIS'in Tablo Görünümü'nde varsayılan olarak bir Double veri türünün 6 ondalık basamağını görüntülediğini unutmayın. Tablo görünümünü 12 ondalık basamak görüntüleyecek şekilde alanın özelliklerini değiştirebilirsiniz. Coğrafi xy değerleri genellikle 9 ondalık basamaktır, bu nedenle çift duyarlıktır.
klewis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.