Bir Dengesiz Projeksiyondaki bozulma nasıl hesaplanır?


28

Bozulmayı hesaplamaya çalışıyorum, böylece bindirmeli metni ve formları, eşkenar dörtgen bir çıkıntının görüntüsüyle tam olarak eşleştirmek için bozabilirim.

Öyleyse, çarpı çarpımı 1: 45.000.000 (örneğin, 2000 piksel genişlik x 1000 piksel yüksekliğinde) eşit bir çıkıntıda verilen bir enlemde nasıl hesaplanır?

Bu gönderiyi ve boşuna giden bağlantılarını anlamaya çalışıyorum: Doğru bir Tissot Indicatrix nasıl oluşturulur?

Ben profesyonel değilim, sadece çok ilgi çekici bir amatör, bu yüzden lütfen benim için aşağılama!

Çok teşekkürler!


Hemen cevaplar için teşekkürler! İşte uzun hikaye; Umarım daha açıktır.

İşleme programlama dilini kullanarak verileri görselleştiriyorum / eşleştiriyorum ve 2B eşlemeli verilerin (farklı boyuttaki yazı tipleri ve daireler) bir 3B dünyaya sarıldığında bozulmamış görünmesini istiyorum. Veriler, eşkenar x, y'ler kullanılarak haritalandırılır ve fon olarak kullanmak istediğim haritalar, bu projeksiyonun tümüdür, bu nedenle bu çarpıklığı "eşleştirmek" istediğimi farz ediyorum (örneğin, Tissot denklemlerini kullanarak enlem üzerinden çarpıtma hesaplayarak?). Programlama dilini kullanarak hem metni hem de daireleri tam olarak deforme edebilirim. Sanırım ihtiyacım olan tek şey doğru yapmak için denklemler.

Orijinal 2D veri haritası:

görüntü tanımını buraya girin

Sarıldığında, bunun gibi bozuk görünüyor:

görüntü tanımını buraya girin

10,000 Dolarlık Soru: 3B küreye sarıldığında 2B görüntümün bozulmamış görünmesini nasıl sağlayabilirim?

Başvuru için, burada aynı soru İşleme forumunda farklı sorulan .

Tekrar teşekkürler!


Sizi doğru anlarsam, bir ortografik projeksiyona yeniden yansıtmak istediğimden emin değilim. 2B veri haritamın, etkileşimde bulunabilecek 3B küre modeline sarılmasını istiyorum (ör. Bükülmüş).

NASA'dan 2 MB "Mavi Mermer" imgesi olan (dörtgen projeksiyon) bir küreyi sarmak için bir 3D modelleme programı (Cinema 4D) kullanıyorum .

Sarıldığı zaman tüm yarım kürelerden bozulmamış gibi görünür (ortografik projeksiyonun olacağı gibi sadece bir yarımkürede değil mi?), Bakınız: hala yukarıdaki 3D modelden. (Modelleme programı, nesneyi döndürdüğüm için benim için ortografik projeksiyon yapıyor, sanırım.) Bu nedenle, 2B veri haritamı benzer şekilde çarpıtırsam, 3B alanda da bozulmamış görüneceğini düşünüyorum. İşte, eşitsiz distorsiyona yaklaşan bir denklemle çektiğim bir atış. 2B görüntüdeki yumurta şeklindeki elipslerin, 3B küreye sarıldığında daire şeklinde göründüğünü fark edeceksiniz. Benzer şekilde, Tissot elipsleri de 3D kürenin üzerinde daireler halinde görünür.

Bozuk daireler içeren Tissot İndikatrisi 3D küreye sarılmış çarpık daireler

Bu yüzden Tissot denklemlerine bakıyordum ... farklı enlemlerde eşkenar dörtgen çıkıntının bozulmasını daha kesin olarak bulmak için bindirmeyi buna göre çarpıtabildim.

Umarım bu mantıklı geliyor.

Belki de bir CBS programı kullanmam konusunda haklısın. Sadece Cartographica'yı indirdim ve çözüp çözemeyeceğimi göreceğim. Bu görevi üstlenen bir acemi için herhangi bir Mac yazılım önerileri?

Tekrar teşekkürler.


1
Gerçekten deformasyonu hesaplamak mı istiyorsunuz yoksa gerçekten projeksiyonun nasıl hesaplanacağını bilmek ister misiniz? Belki de, başarmaya çalıştığınız şeyi göstermek için Web’de bir resim sunabilirsiniz. "Eşleme" yi kullanmanız, bir görüntünün diğerine nasıl dönüştürüleceğini belirlemek istediğinizi belirtir ve neyle başlamak istediğinizi ve neyle sonuçlanmak istediğinizi belirtmeniz gerektiğini belirtir.
whuber

1
Jargonu bilmeden ne yapmak istediğinizi tarif etmenin zor olduğunu biliyoruz, ancak sonucu değil, süreci tanımlamaya çalışıyorsunuz.
Çözmek

Teknik açıdan: istediğiniz reproject bir karşı equirectangular projeksiyondan ortografik projeksiyon ( "boşluk dünyaya"). Hangi yazılımı kullanabilirsiniz? CBS yazılımınız varsa veya bir projeksiyon kütüphanesine karşı kodlama yapmak istiyorsanız, iş temelde sizin için yapılır. Aksi takdirde, eşit açılı çıkıntının (kolay) çıkarılması ve ortografik çıkıntının yansıtılması için denklemleri uygulamanız gerekir (çok zor değil, ancak sayısal rutin kodlamada bazı beceriler gerektirir).
whuber

1
Bu yazıyı gördüm ve temelde aynı şeyi yapmaya çalışıyorum. 3B küreye yansıtıldığında doğru şekilde bozulan 2B daireler çizmek istiyorum. 2D dairelerin bozulmasında kullandığınız algoritmayı paylaşmaya istekli olup olmadığını merak ediyordum. Gerçekten bir cevap değil bir yorum olmalıydı, ama yanlış noktaya yazdım. Üzgünüm.
HankTurbo

Verilerinizi 3B alanda çizmeli ve daha sonra küreye geri yansıtmalısınız.
AngelLeliel

Yanıtlar:


5

3B küreye sarıldığında 2B görüntümün bozulmamış görünmesini nasıl sağlayabilirim?

Görüntü koordinatları enlem ve boylamdır.

(a) Bir ortografik veya dikey yan taraf projeksiyonu (yani, uzaydan dünyaya benzeyen çıkıntılar) kullanarak projeyi çıkarın ve yeniden tasarlayın veya

(b) Doku koordinat olarak latiyonu kullanarak bir kürenin 3B modeline doku eşlemesi yapın ve o küreyi bir 3B grafik oluşturma cihazıyla görüntüleyin.

GIS'lerin çoğu (a) rutin olarak yapar. (B) 'yi açıklamak için, burada doku eşlemeli küreyi yörüngeden alan bir bakış açısıyla alınan sorudaki "düz" haritadan türetilmiş bir dizi görüntü verilmiştir :

Uzaydan gelen dünya

(En sağdaki resme yakından bakarsanız, Pasifik Okyanusu üzerinden belirgin bir meridyen görebilirsiniz: bu haritanın sol ve sağ taraflarını bir araya getirerek oluşturulan "dikiş" dir.)

Bunlardan birini üretmek için temel Mathematica komutu

SphericalPlot3D[1, {a, 0, \[Pi]}, {b, 0, 2 \[Pi]}, Mesh -> None, 
 PlotStyle -> {Texture[i]}, TextureCoordinateFunction -> ({#5, -#4} &), 
 Lighting -> {{"Ambient", White}}, 
 Boxed -> False, Axes -> False, Background -> Black]

Bu, orijinal sorunu (bir alanda "veri haritaları" çizerek) daireleri doğru gösteren bir harita oluşturmak için azaltır. Bunun için en iyi izdüşüm Stereografiktir, çünkü küre üzerindeki tüm daireleri - büyüklükleri ne olursa olsun - haritadaki dairelere yansıtır. Böylece bir prosedür doğru geniş daireler çizmek için Equirectangular söz gösterildiği gibi, çıkıntı, bir Stereographik çıkıntı bunları oluşturmak için ve daha sonra bunların unproject (enlem, boylam) coğrafi koordinatlara. (Lon, lat) 'i (x, y) olarak kullanmak Kartezyen koordinatları, haritayı Eşkenar dörtgen çıkıntı ile aynı tutar ve kürenin üzerinde doku haritalaması yapmak için veya bir Ortografik çıkıntı uygulamak için uygundur.


Tissot göstergelerinin bir çözüm olarak uygun olmadığına dikkat edin: yalnızca sonsuz küçük çevrelerin yerel bozulmalarını gösterir . Küresel ölçekte görecek kadar büyük olan daireler, çoğu projeksiyonda artık dairesel görünmeyeceklerdir: söz konusu haritadaki kabarık görünümlerine tanık olun. Bu yüzden burada gösterildiği gibi projeksiyonlarla oyun oynamak iyi bir çözüm için şarttır.


Bilgilendirici yazı için teşekkürler! (B) 'yi benim yaklaşımım olarak alıyorum ve elimde doğru şekilde oluşturulmuş bir eşkenar dörtgen haritaya sahibim, ancak haritayı 3B küreye eşlerken çirkin kutup çarpıklıkları alıyorum. Nazikçe yardım eder misiniz? gis.stackexchange.com/questions/245315/…
Sibbs Gambling

2

Çizilen şekillerin kürenin küçük bir kısmını kapsadığını varsayarsak, genişliği 1 / cos (lat) ölçekleyerek ve yüksekliği yalnız bırakarak elde edebilmelisiniz.

Şekil büyüdükçe ve kutuplara ne kadar yaklaşırsanız, o kadar iyi sonuçlanacaktır.


Bunun neden işe yarayacağını açıklayabilir misiniz? Örnek görüntülerdeki gösteriminin kenarına yakın kürenin küçük bölümlerinde bile dramatik bir şekilde başarısız olacağı görülüyor.
whuber

Düzenleme için teşekkür ederiz; Buna göre aşağı oyu kaldırdım çünkü cevabınız bana doğru gözüküyor ve gelecekte birileri için faydalı olabilir. Bununla birlikte, soruyu gözden geçirirken, herhangi birinin kürenin etrafına bu kadar küçük şekilleri sarması pek olası görünmüyor - ve bunu yaparken, kutuplarla ve başka her yerde de başa çıkmaları gerekecek, sanırım.
whuber

0

Nasıl yorum ekleyeceğimi bilemiyorum, bu yüzden bunu çözüme dahil edeceğim ve moderatörlerin neden yorumlayamadığımı bulmak için karışmalarına izin vereceğim.

Sorunuzu okurken ilk izlenim "Neden çevrelerinizi Mercator gibi uygun bir projeksiyonda tasarlamıyorsunuz?" Bu haritayı bir Mercator projeksiyonuna yansıtabilir ve dairenizi ve metin bozulmasını görebilir, her şeyi güzel görünmek için sabitleyebilir ve dünyaya yansıttığınızda, şekillerin doğru kalması gerekir (bu, uygun bir projeksiyonun tanımıdır).


2
Bu bana bir cevap gibi okuyor, ben de bırakayım. Ancak yanlış anlaşılmaya dayanmak yanlıştır: uygun projeksiyonlar tüm çevreleri çevrelere yansıtmaz. Bunu sadece sonsuz yaparlar . Bu ayrım çok büyük: örneğin, Mercator’un Dünya ekseni etrafında dönen herhangi bir daireye ne yaptığını düşünün. Onu bir çember olarak haritalayamaz - bir yere kırmalı. Bunun hakkında daha fazla tartışma için, lütfen Tissot için sitemizi arayın .
whuber

1
“Bunu sadece sonsuz yaparlar.” -> "Sadece sonsuz küçük olanlar için yapıyorlar."
Martin F

0

Bakın, ilk 2B haritanız çizilmiş coğrafi özelliklere sahip değil. Onları bu haritaya ekleyin (Afrika dağılımı) ve aynı anda her şeye düşündüğünüz bozulmayı uygulayın. Coğrafya da değiştirilmiş olacak ve onu küreye koyduğunuzda yanlış olurdu. Bu nedenle, uygulanan bir çarpıklığın azaltılması fikrinin işe yaramayacağına inanıyorum.

Sınırlı alana ve kabul edilebilir bozulmaya sahip küçük 2B haritalarda grafik çizerek 2B'de geçebilirsiniz. 2B haritayı karolar halinde kesebilirsiniz ve her karo için kendi "en iyi" projeksiyonunu kullanın.

Diğer taraftan, 2D harita üzerinde verilen yarıçaplı bir jeodezik daire üzerinde noktalar oluşturmak kolaydır. Bunun için belirli bir mesafedeki bir noktanın en / boyunu ve başka bir noktadan azimutu hesaplayan bir fonksiyon bulmanız gerekir ("doğrudan problem Vincenty" için arama yapın). Bunu aldığınızda, azimutu 0'dan 360'a değiştirerek belirli bir mesafeden eşit miktarda nokta üretebilirsiniz. 2B'de bu noktalardan çokgen yapmak, jeodezik daire bir kutup veya kesişen yerlerde daha fazla çalışma gerektirir haritanın sol veya sağ sınırı. Jeodezik çevreler düz harita üzerinde gibi görünebilir nasıl göz atın burada .

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.