KML’niz Google Haritalar API’sı için çok büyük / karmaşıksa sıradaki ne? [kapalı]


29

Web uygulamamız basit haritalama yetenekleri içeriyor (şu anda sadece gömülü bir Google Haritadaki işaretçiler ve KML kaplamaları). Bu oldukça iyi çalışıyor; Karşılaştığımız tek gerçek sınırlama, Google’ın KML’nin boyut ve karmaşıklık sınırlamalarının ötesine geçen KML kaplamalarıdır .

Kendi sunucumuzu ayakta tutmayı düşünüyoruz (örn. GeoServer veya ArcGIS Server); ancak bu, Google’ın limiti 10 MB olduğunda, 15 MB’lık KML’yi (örneğin) sunmak için büyük bir adım gibi görünüyor.

Akıl sağlığı kontrolüne ihtiyacım var: Google’ın KML kaplamaları için ücretsiz ve kolay API'si ile kendi döşeme sunucumu oluşturmak arasında bir orta nokta var mı?


5
bir KML'nizi 2 küçük KML dosyasına böle - isteğe bağlı olarak istemediğiniz verileri açın ve kapatın.
Mapperz

1
isteğe bağlı olarak kullanılması füzyon tabloları (100k satır sınırı veya veri 100MB) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/... bkz groups.google.com/group/fusion-tables-users-group/browse_thread/...
Mapperz

@ maperz Bir seferde yalnızca 100 MB veri yükleyebilir, ancak daha sonra 250 MB depolama alanına kadar satır ekleyebilirsin.
geographika


Fusion Tables hizmeti 3 Aralık 2019'da kapanıyor, bu yüzden gördüğüm seçenek kml dosyalarını yazılım - QGIS masaüstüyle küçültmek. Ayrıca qgis python kütüphanesi var. QGIS masaüstünü, 0.0005 kullanarak Basitleştir geometrisi seçeneğiyle kullandım. Sonra oluşturulan katmanı kml olarak verdim. Toplu iş olarak aynı menüden yapabilirsiniz. Ardından, oluşturulan tüm katmanları ayrı bir projede açıp tüm .shp dosyalarını .kml
makkasi

Yanıtlar:


12

Google Haritalar geliştirmeye zaten yatırım yaptığınızdan, tüm verileri Google Fusion Tables'a aktarmanızı şiddetle tavsiye ederim, bu sayede harita üzerinde inanılmaz performans gösteren KML'ye benzer bir şekilde ayrıştırılabilir (bkz. WNYC Fusion Tables uygulaması ). Ön ucunu büyük ölçüde değiştirmek zorunda kalmadan KML'ye yükseltmeyi düşünün.


Verileriniz> 24 saatlik güncelleme programında yoksa, bunun harika bir fikir olduğunu düşünüyorum. Bu, Google'ın bize söylediği şeydir (kml tarayıcıyı yavaşlatıyorsa füzyon tablolarını kullanıyorsa), bunun en iyi cevap olduğunu söyleyebilirim.
Steve

1
Fusion Table'leri işaretlediğiniz için teşekkür ederiz - bir şekilde bu tamamen dikkatimi tamamen çekmişti, çok havalı. Ne yazık ki, bu sık sık değişen veriler için çalışmak için biraz sakar olurdu; ve genel depolama sınırlamaları (kullanıcı başına 250 MB) ölçeklememize izin vermedi.
Herb Caudill

2
Deneysel Fusion Tables hizmetinin 3 Aralık 2019'da kapandığını unutmayın.
Jonas

12

KML'nizi, daha küçük kmls'leri referans alan bir Ana KML ile birden fazla KML'ye bölebilirsiniz. En azından bu, dosya boyutlarınızı saygın bir seviyeye indirecek ve KML'ler olarak daha büyük veri kümelerine başvurmanıza olanak sağlayacaktır.

Dürüst olmak gerekirse, KML, yalnızca birkaç özelliği ve ilişkili özellikleri olan küçük veri kümeleri için gerçekten iyidir. Bir dosya veri kaynağı olarak yanına yaklaşmam. Eğer bu dosyaların daha da büyüdüğünü görüyorsanız, başka bir veri türüne bakardım veya dağıtılmış veri setleri için kesinlikle GeoServer / MapServer yolunu izlerdim.


2
Ancak Network KML (Superoverlays ile birlikte büyük veri kümeleri için dizayn edilmiştir) ancak bir web sunucusu ve görüntü oluşturma yazılımı gerektirir Geoserver bu tür KMZ ile iyi bir iş çıkarmaktadır - Google Haritalar API KML kullanımını kısıtladığı için Google Earth ile en iyi şekilde çalışır.
Mapperz

Google Earth Kurumsal Müşteri’nin haricinde, süpervizlemede hiç şansım olmadı. Buna rağmen bununla fazla zaman geçirmedim. Kesinlikle keşfedilecek bir seçenek, +1 @Mapperz
OptimizePrime

1
GeoServer'ı Oracle ile kullanın ve çok iyi çalışıyor; KMZ (süper denetleyici) - kullanıcılar için çok faydalı olan canlı (sürekli güncellenen) veriler, yenilemeyi hızlandırmak için geoserver'ı değiştirmek zorunda kaldı.
Mapperz

8

Google Haritalar API’nıza çok fazla zaman harcamamışsanız, kendi KML dosyalarınızı okuyabilen bir müşteri tarafı KML ayrıştırıcısı olan OpenLayers’a geçebilirsiniz - aşağıdaki örneğe bakın:

http://openlayers.org/dev/examples/kml-layer.html

Ancak 15 MB'lık bir dosya için bu muhtemelen tarayıcının durmasına neden olacaktır. Dosya boyutu sınırına yaklaştığınızda Google sunucuları arasında da oldukça yavaş olabilir.

Gerçekten 15 MB'lık ayrıntı seviyesine ihtiyaç var mı, yoksa çok fazla bilgi kaybetmeden KML'yi basitleştirebilir misiniz?

İstemci tarafında vektöre / geometriye erişmeniz mi gerekiyor? Bu veri resim olarak sunulabilir mi?

Bunların hiçbiri mümkün değilse, bir harita sunumu yazılım türüne bakmak zorunda kalacaksınız. ArcGIS Server'ın GeoServer'ı ile birlikte, MapServer'ı KML'yi veya WFS olarak sunmayı düşünebilirsiniz . Bir harita sunucusu kullanmanın yararı, isteklerin yalnızca harita içindeki verileri döndürerek ağ trafiğini azaltıp yükleme sürelerini azaltacağıdır.


Google Fusion tablolarını denedikten sonra Guddie'nin yaklaşımı, uygulanması en kolay yöntemdir. Bir seferde yalnızca 100 MB KML yükleyebilirsiniz, ancak her kullanıcının 250 MB depolama seçeneği vardır (yazma anında).
geographika

2

Sürüm 3 kullanıyorsanız, benzersiz bir tanımlayıcı hariç tüm özellik bilgilerini çıkarabilir ve bir kullanıcı bir özelliği tıkladığında ajax çağrıları yoluyla bir web servisine bilgi isteyebilirsiniz. 10 MB değerinde puanınız varsa, tüm bu noktaları bir kerede görüntülemek yerine, bir tür kümeleme yapmak iyi bir fikir olabilir. Ayrıca, yer paylaşımlarınızı ayrı KML dosyalarına ayırabilirsiniz.



2

MapLarge'ın ilginç bir çözümü var - verilerinizi sunucularında çoğaltabilirler ve sonra kendi özel yazılımlarını kullanarak hızlı bir şekilde fayans üretme işlemlerini kaldırabilirler. Daha sonra Google Haritalar, OpenLayers, vb. Temel haritalara bunları yerleştirebilen Javascript API'leri sunarlar.

Örneklerinden bazılarına göz atın - hız etkileyici:

Ücretsiz değildir, ancak bu katmanları oluşturmak için ayrı bir sunucuyu ayakta tutmaya zorlamak istemeyen biri için iyi bir seçenek olabilir.

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.