Openlayers'da binlerce çokgen görüntülemenin en iyi yolu nedir?


10

Binlerce çokgen görüntüleyecek bir Openlayers haritası oluşturmaya çalışıyorum. Kullanıcı her birini tıkladığında, bazı meta verilerin görüntülenmesini istiyorum. Bu büyük veri kümesiyle çalışmak zor gibi görünmektedir. Ama bununla ilgili standart bir yol olup olmadığını anlamaya çalışıyorum. Bu noktada, sanırım ben de

  1. çokgenlerimi WMS ile göster ve getfeatureinfo kullan
  2. WFS ile görüntüleyin, Strategy.BBOX ile yükleyin ve meatadata almak için GetFeature'ı kullanın.

Tüm bu verileri bir haritaya yüklemek ve iyi bir hıza sahip olmak için eksik mantıklı bir yolu var mı. Bu sayfaya bakıyordum ve ne yaptıklarını anlamaya çalışıyordum: http://protectedplanet.net/

Yanıtlar:


5

BBOX stratejisini sevmiyorum çünkü üretilebilecek isteklerin miktarı nedeniyle yavaş olabileceğini düşünüyorum.

Bahsettiğiniz her iki şeyin bir kombinasyonunu kullanırdım.

çokgenleri WMS ile görüntüleyin ve getfeatureinfo kullanın ... sonra WFS kullanın, özelliği tıklatıldığında anahattı yüklemek ve / veya veritabanından daha fazla bilgi almak için.

protectionplanet.net sadece google maps için openlayers kullanmaz. Muhtemelen tüm bilgileri bir KML / KMZ'de saklıyorlar.


Çok teşekkürler! Sanırım doğru yoldayım. Ama ben korumalı planlı KML kullanıyor olup olmadığını merak ediyorum, bunu hızı için yapmalı mıyım? Ve bu KML verileri WFS tarafından mı sunuluyor?
KyleK

KML olup olmadığından emin değilim, sadece bir tahmin. Ancak WFS GML kullandığından, WFS tarafından sunulmuyorsa. Google API'larını ve KML'yi kullanmayla ilgili şey, bu KML'yi HERKESİN görebileceği genel bir URL'de bulundurmanız gerektiğidir. Bu bir sorun değilse, belki de deneyebilirsiniz. Bunun nedeni, Google'ın bu KML'yi sunucularına emmesi ve API'ye geri döndürmesidir. Bu iki nedenden dolayı, bazı projelerin hassasiyeti nedeniyle Google Haritalar API'sını kullanamıyorum.
CaptDragon

Herkese açık KML URL'nize erişimi, yalnızca Google KML ayrıştırıcı dizesini sunan bir kullanıcı aracısına izin vermek için sınırlayabilirsiniz.
Çavuş

3

Buradaki ana yaklaşım, rasterleştirmeyi etkileşim ile ayırmaktır. Bir yaklaşım (I kısmen sorumlu olduğumu) 'dir UTFGrid tarafından kullanılmış olan, vb NPR, ve entegre edilmiş TileMill ve Mapnik . Ayrıca CartoDB tarafından da kullanılıyor ve Google Haritalar, Fusion Tables için benzer bir yaklaşım kullanıyor.

Korumalı gezegen raster döşemelerini de kullanır (örneğin, bu:) http://184.73.201.235/blue/8/78/93ve nokta tabanlı sorgular için canlı bir sunucuya sahiptir (örneğin, bu ).

Ynt: CaptDragon: WFS veya KML dahil değil.

WMS ve WFS, herkese açık bir site için yeterince iyi bir performans sunmayacaktır. Kullanıcıların yakınlaştırmasına izin verirseniz BBOX stratejisi çalışmaz.


Bilginize: Size bir fayans verecek bir WMS tarama hizmeti önbelleğe alabilirsiniz.
CaptDragon

1
Evet, ama buradaki ana sorun bu değil, etkileşim. Döşeme önbelleğe alınacak şekilde tasarlanmadığından WFS / WMS GetFeature'ın çalışma biçimini önbelleğe alamazsınız.
tmcw

CSW, WFS ve WMS GetFeature, GetRecord vb. Sonuçlarımı her zaman önbelleğe alırım. Bunlar birlikte çalışabilirlik için yalnızca biçim standartlarıdır ve önbelleğe alınmış olsun veya olmasın kaynağın nerede depolandığını belirlemez.
CaptDragon

Tipik bir WFS GetFeature isteği, tek bir koordinat isteğidir; bu istek için bir önbellek yalnızca tam eşleşmeler için iyidir - kullanıcı etkileşimi açısından nadirdir. UTFGrid gibi veriler veri karolarını önbelleğe alır ve potansiyel olarak milyonlarca tek koordinat için bir önbellekten farklı olarak önbelleği iyimser olarak doldurabilir. Bu şekilde standart önbellek dostluğunu belirler.
tmcw

Vay canına, yardımın için teşekkürler. OpenLayers'ı kullanıyorum ve haritam 4326'da (ki bu TileMill tarafından desteklenmiyor), CartoDB'yi verilerimi depolamak ve bunlara erişmek için bir araç olarak önerir misiniz?
KyleK
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.