Bir web haritalama ortamında efsane ayrıştırma için FOSS çözümü var mı?


14

Web haritalama gereksinimlerimiz oldukça standarttır - bazı temel sorgulamalar ve ortaya çıkan haritayı yazdırma (veya resmi kaydetme) yeteneği. Tipik olarak ESRI ürünlerini geçmişte kullandık (şu anda GeoCortex kullanıyoruz), ancak efsane bilgilerinin haritada gösterilenle eşleşecek şekilde nasıl ayrıştırılacağı sorununu hala çözemedik. Örneğin, haritada dört çokgen varsa, çokgenler için yalnızca dört gösterge öğesi olmalıdır. Bu sorun için açık kaynaklı bir çözüm var mı?

EDIT : Bakalım bu konuya daha fazla açıklık getirebilir miyim. Şu anda 33.000'den fazla çokgen içeren bir jeoloji katmanımız var. Bu katman için açıklama tek bir görüntüdür ve birkaç yüz açıklama öğesi içerir (yani, bir JPEG / PNG'de depolanan tüm jeoloji katmanı için açıklamadır).

Tipik olarak, bir kullanıcı bir alanı yakınlaştırır (tek bir NTS harita sayfası, hatta daha küçük) ve böylece bir jeoloji çokgenleri alt kümesi ekranda gösterilir. Daha sonra haritayı GeoCortex / ArcGIS Sunucusu tarafından oluşturulan bir basılı belge (PDF veya resim) olarak kaydederler. Basılı belge bir başlık, haritanın bir görüntüsü ve bir açıklama içerecektir. Bununla birlikte, jeoloji katmanının efsanesi , haritada gösterilen şey değil (yani, çok daha küçük bir alt küme) , tüm jeoloji katmanının efsanesi olacaktır .

Böylece, basılı dokümanla gitmek için ekrandaki / haritadaki gerçek öğeleri yansıtan jeoloji efsanesinin bir alt kümesini kırpmamı veya oluşturmamı sağlayan bir FOSS çözümü olup olmadığını görmek istiyorum. . Umarım bu şeyleri açıklığa kavuşturur; Olmazsa özür dilerim!


1
Merhaba ollyoop- İstediğiniz sonucu hayal etmekte zorlanıyorum. Kötü efsaneye bir örnek ve iyi bir efsaneye örnek verebilir misiniz? Bunun bana veya başkalarının cevap vermesine yardımcı olacağını düşünüyorum. Teşekkürler--
andytilia

Bu özellik Arcgis sunucusuna 10.1 dahil edilmiştir, ESRI sunumu sırasında gördüm.
geogeek

Hmmm, bunun nasıl çalıştığını göreceğiz. Bu arada herhangi bir FOSS çözümü var mı?
ollyoop

1
FOSS veya ESRI tabanlı, özel koda ihtiyacınız olacak gibi görünüyor.
Ragi Yaser Burhum

Elbette Latitude Coğrafyası bunu yapabilir. Onlarla bu konuda konuştunuz mu (zaten Geocortex Essentials'da olsun ya da olmasın ya da uygulamayı planlıyorlarsa)?
Chad Cooper

Yanıtlar:


3

Belirli koşullara bağlı olarak istediğinizi yapmak kesinlikle mümkündür. Birkaç yıl önce geliştirdiğim bu Flex Uygulamasına bir göz atın: http://india-wris.nrsc.gov.in/LULCApp.html .

Efsane ve İstatistikler, mevcut kapsamda görünen verilere bağlı olarak değişir. Algoritma, sınıfın her birinin farklı bir renge sahip olmasını gerektirir. Flex Uygulaması sınıfı ve rengini bilir. Her kapsam değişikliğinde, geçerli harita kapsamını bir bitmap'e dönüştürür ve ardından içindeki renkleri bulur. Bunu kullanarak, şu anda hangi renklerin veya sınıfların görünür olduğunu öğrenebilirsiniz. Bu bilgilere dayanarak, açıklama dinamik olarak oluşturulur.

O zaman Flex'i kullanmıştım, ancak bu HTML5'teki Canvas'ı kullanarak da mümkün. Veya dinamik olarak oluşturulan efsanenizi elde etmek için aynı şeyi harita görüntünüzde yapmak için herhangi bir Sunucu tarafı kodunu kullanabilirsiniz.


Aynen öyle! Uygulamada bir örnek görmek harika. Çok takdir !!!
ollyoop

5

AFAIK, FOSS4G veya ESRI'da, bu katmanı oluşturmak için özel kod yazmanız gerekir.

O kadar da zor değil , ama birkaç satırdan daha fazla kod alacak.

ArcMap için bu bir Özel Öğe kullanılarak gerçekleştirilir . ESRI yardım sitesi eski örnekler ve yeni örneklerle doludur .

Geçmişte, Pagelayout Çerçeve Öğeleri'ni kullanarak açıkladığınız şeye benzer bir şey başardım .

ArcObjects'i hiç yapmadıysanız (ancak programladıysanız), çizim kodu biraz zor olabilir, ancak genellikle bu "aha!" an.

Algoritma basit:

  • (1) Göstergeyi oluşturmak için referans olarak kullanmak istediğiniz PageLayout öğesinin Harita nesnesini alın ... İstediğiniz haritaya erişmek için birden çok çerçeveyle uğraşmanız gerekebilir, çünkü bir Pagelayout farklı Herhangi bir özel ArcMap Pagelayout programlama yapmadıysanız (bu, sahip olabileceğiniz küçük ek haritalar hakkında düşünün) biraz olağandışıdır.

  • (2) İstediğiniz haritanın ActiveView'in Görünür Kapsamını alın .

  • (3) Bunu , haritadaki tüm katmanlarda döngü ve arama yapmak için sorgu filtresi geometrisiniz olarak kullanın .

  • (4) Katman herhangi bir kayıt döndürürse , size daha önce verdiğim örneklerde gösterildiği gibi çizmeniz gerekir.

Maalesef size daha kolay bir çözüm sunamıyorum, ancak en azından bu şekilde, görünmesini istediğiniz gibi görünmesini sağlayabileceksiniz - sadece kodlama gerekiyor.

Güncelleme:

Bunu bir Web uygulaması bağlamında yapmak istediğiniz için, belgeleri kontrol ettim ve benzer bir algoritma kullanarak bunu yapmanın birkaç yolu var.

Bunlardan biri ArcGIS Server Nesne Uzantısıdır . (1) dışındaki tüm adımları uygularsınız (bu bağlamda Pagelayout için endişelenmenize gerek yoktur). REST kullanarak sonucu ortaya çıkarın.

Buradan birkaç seçeneğiniz var (Flex veya Javascript kullanmak istiyorsanız), ancak fikir aynı - sayfada yenileme oluşturduğunuz REST web hizmetini arayın ve göstergeyi çizin.

Bu yaklaşımın, önerilmiş olan diğerlerinin aksine avantajı , özelliklerinizle herhangi bir sembolojiyi kullanabilmenizdir (ve özelliğin sembolojisi için farklı renklerle sınırlı değildir). İstemci tarafı kodu için sık kullandığınız web dilini kullanabilirsiniz. Gösterge için oluşturduğunuz semboller haritadan otomatik olarak oluşturulabilir.

Dezavantajı, bir Sunucu Nesne Uzantısı yazmanız gerekecek olmasıdır! Neyse ki, zaten ihtiyacınız olan şeylerin% 75'ini yapan ve yukarıda yaptığım yorumlara nasıl devam edeceğiniz konusunda net bir fikir vermesi gereken bir ESRI örneği var .

Güncelleme 2: Buna bir FOSS4G çözümü kadar, aynı yaklaşım, her biri için biraz farklı olsa da, FOSS sunucularından herhangi biriyle de işe yarayacaktır.


1
Cevabınız için çok teşekkür ederim! Bunu ArcGIS ortamı için zaten yapan Legend Limiter adlı bir araç var. Yapmak istediğim şey bu web haritalama dünyasına bağlantı noktası.
ollyoop

@ollyoop En az 9.3'e kadar, aynı yaklaşımın ArcGIS Server için tamamen iyi olacağını biliyorum. 9.3'ten beri sunucu oluşturma mimarisinde önemli değişiklikler olduğunu biliyorum ve itiraf etmedim. Özel öğeler 10.1'den çekilirse şaşırırdım.
Ragi Yaser Burhum

@ollyoop ArcGIS Server ile çalışacak bir yaklaşım ekledi
Ragi Yaser Burhum

3

Geocortex Essentials ile bir PDF'ye dışa aktardığınızda, açıklama yazdırma şablonundaki bir alt rapor tarafından oluşturulur. Bu alt rapor, harita görüntüsünü oluşturmak için kullanılan tüm görünür katmanları ve ArcGIS Server tarafından üretilen tüm gösterge renk örneklerini alır. Göstergede herhangi bir katmanın gerçekten yazdırılan alanın boyutunda çizilip çizilmediğini belirlemek için herhangi bir uzamsal sorgu düzenlemez.

Dolayısıyla, göstergenin davranışını değiştirmek isterseniz, gösterge alt raporunu özelleştirebilir veya yazdırma şablonuna bir gösterge eklemek için alt rapor yerine bir görüntü kullanabilirsiniz. Görüntüleyicinizde kullanmak için bir şekilde bir efsane görüntü oluşturuyorsanız, bu hizmeti baskı motorundan yeniden kullanabilmeniz gerekir.

Gösterge, renk örneğinin bir katman için mi yoksa katmandaki bir sınıf mı olduğuna bağlı olarak, gösterge metninin biçimlendirmesini değiştiren bazı yerleşik satır içi kod içeriyor. Rapor tasarımcısında "Komut Dosyası" sekmesine geçerken satır içi kodu görebilirsiniz.

(Latitude Coğrafyasında çalışıyorum)


1

Tam "FOSS çözümü" ile "web haritası" hakkında ... Dikkat edilecek noktalar:

  • "FOSS çözümü" güvenli, istikrarlı vb. Olabilmek için "popüler" (büyük ve organize bir topluluğa sahip olmalıdır) olmalıdır.
  • FOSS ve CBS'de kilit bir kavram standardizasyondur : en iyi çözümler OGC olanlar gibi standartları benimser .
  • Bugün popüler "web çözümleri" OpenLayers, Mapserver, GeoServer, PostGIS, vb. Hepsi OGC uyumlu bir çekirdeğe sahip. "GeoCortex / ArcGIS Server" çözümü FOSS değil, belki de OGC uyumludur.

Ve teknik düşünce: "kapsamları" (?) Kullanıyorsunuz, bu nedenle uzamsal bilgilerinizi almak için iyi bir OGC standardı WMS'dir .


Bir sorununuza OGC uyumlu basit bir çözüm , WMS kullanmaktır GetCapabilities ve GetLegendGraphic hizmetleri getiriyi bir XML dosyası içine standart bir efsane açıklama ve efsaneler ile görüntü.

NOT: Bazı GIS / FOSS çözümlerini düşündüğünüzde, önce standartlarla düşünebilirsiniz, daha sonra sorun "iyi bilinen bir LEGO parçaları sorununa" indirgenir ve parçalar herhangi bir satıcıdan gelir.

ArcGIS 10+ , GetLegendGraphic'e sahiptir , ancak yalnızca bir gösterge alt kümesini göstermek için BBOX'u belirleyip belirleyemeyeceğinizi kontrol edin.


Efsane ile bir harita düzeni oluşturmak istiyorsanız , bu "FOSS LEGO çözümünün" başka parçaları da var:

Herhangi FOSS haritası sunucusu, Mapserver gibi bir sunabilir (ve ESRI çözümler de düşünüyorum) JPEG bakınız - bir WMS olarak (kiremitli değil) harita isteğini görüntüsünü WMS en GetMap hizmetini .

Not: bu bir standart değildir, ancak sunucunuz MapServer gibi şablon araçlarıyla açıklama ile harita sunacak şekilde yapılandırılabilir .

"Gösterge ile eşle" düzeni oluşturmak için Javascript, PHP veya harita ve gösterge için (REST) ​​web hizmeti isteklerini yerine getiren başka bir dille HTML (veya "anında PDF dosyası") oluşturabilirsiniz .

HTML'den PDF oluşturmayı tercih ederim: HTML'den PDF'e dönüştürmeler için bir FOSS çözümü olan wkHtmlToPdf'yi kullanabilirsiniz . "Anında JPEG düzeni" ile daha kötü mizanpajlar oluşturmak için sunucuda imagemagick gibi standart bir FOSS araç seti kullanabilirsiniz .

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.