Was ist die beste Open-Source-Web-Mapping-Lösung für die Verarbeitung von über 3000 Polygonen?

12

Ich habe mehr als 3000 Polygone, die Wassereinzugsgebiete darstellen (18 Hauptwassereinzugsgebiete). In der ersten Phase werden alle 18 Wassereinzugsgebiete angezeigt und ihre Liste wird in der linken Seitenleiste platziert. Wenn ein Benutzer mit der Maus über die Karte fährt, wird nur der Name der Wasserscheide angezeigt. Wenn ein Benutzer auf eine größere Wasserscheide auf der Karte klickt, wird ein Popup-Fenster mit Details geöffnet. Bei einem größeren Zoom werden alle Wasserscheiden angezeigt.

Ich bitte Sie um Rat, welche Open-Source-Lösung für den Umgang mit dieser großen Menge von Polygonen am besten geeignet ist.

Ich habe über Leaflet oder OpenLayers nachgedacht, aber ich weiß nicht, ob sie mit großen Mengen von Polygonen umgehen können.

Schlägst du auch vor, sie in MySQL zu speichern oder?

Gegenstrom
quelle
3
Können Sie diese Polygone rastern? oder vielleicht einen Feature-Server wie einen Geo- oder Feature-Server verwenden?
Dassouki

Antworten:

12

Ich würde einen Image-Service (Rasterebene) erstellen und ihn mit dem Web Map Service (WMS) bereitstellen . Auf diese Weise können Sie jedes API-Framework verwenden, mit dem Sie vertraut sind, sofern es WMS unterstützt ( OpenLayers ). Sie können WMS verwenden, um einen Layer aller Polygon-Features anzuzeigen, und dann mit GetFeatureInfo onclick von WMS Informationen zu diesem Polygon abrufen.

Wenn Sie aus irgendeinem Grund die Vektordaten auf der Karte benötigen, können Sie diese dynamisch erstellen, indem Sie auf die GetFeatureInfo-Antwortdaten klicken.

CaptDragon
quelle
5

Siehe TileMill , mit dem UTFGrid- Interaktionen in eine MBTiles- Datei gerastert und auf MapBox oder einer Open-Source- MBTiles - Serverimplementierung wie TileStache gehostet werden können .

Hier ist es mit vielen, vielen Polygonen . Bei diesem Ansatz müssen Sie Kacheln rastern (auch bekannt als Bake-Kacheln). Dies ist jedoch im Wesentlichen die einzige Möglichkeit, das zu tun, was Sie möchten, ohne über massive Serverressourcen, eine benutzerdefinierte App oder einen sehr eingeschränkten Browser-Satz zu verfügen.

tmcw
quelle
Ich mag dieses Beispiel. Können Sie mir sagen, wie ich Shapefiles rastern kann? In TileMill? Vielen Dank.
Gegen den Strom 29.08.12 um 17:37
Ja, das ist der gebräuchlichste Weg. Hier ist die Dokumentation zum Hinzufügen von QuickInfos auf diese Weise . Wenn Sie gegen GUI-Tools und einen Python / Mapnik-Profi allergisch sind, gibt es auch eine Cli-Route , die all das vermeidet, aber ein bisschen kryptisch ist.
tmcw
2

Maßstabsabhängigkeit und eine räumlich indizierte Datenbank sind der Schlüssel zu diesem Problem. Sie sollten in der Lage sein, Wassereinzugsgebiete mit mindestens zwei, möglicherweise drei oder vier Ebenen darzustellen. Beispielsweise können Sie die Daten in Major (die 18), Minor (eine Kombination aller mittelgroßen Wassereinzugsgebiete, die alle zum selben Major gehören) und Tertiär (die 3000 Polygone) unterteilen. Dies würde Ihnen drei verschiedene Vektorebenen / -dienste geben.

Verwenden Sie die Skalierungsabhängigkeit, um abhängig von der Zoomstufe des Benutzers nur den entsprechenden Dienst zu zeichnen.

Verwenden Sie eine Datenbank mit räumlicher Indizierung, um sicherzustellen, dass die Dienste schnell gezeichnet werden, und zeichnen Sie nur den Teil, der zum Ausfüllen des aktuellen Ansichtsfensters erforderlich ist.

Alternativ können Sie auch Kacheln der Wasserscheidenkarten erstellen (wiederum basierend auf den entsprechenden Maßstäben für jeden Layer) und diese auf diese Weise bereitstellen.

Auf dieser Website gibt es bereits viele Fragen, die geeignete Open-Source-Lösungen zur Anwendung dieser Strategien empfehlen.


quelle
0

Zusätzlich zu TileMill können Sie sich MangoMap ansehen , es ist kein Open Source- Programm , aber es ist derzeit kostenlos und kann mit dieser Art von Daten umgehen .

[Haftungsausschluss: Ich arbeite mit MangoMap, antworte aber, weil es in diesem Fall angemessen ist]

ChrisInCambo
quelle