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?
quelle
Antworten:
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.
quelle
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.
quelle
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
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]
quelle