Co dalej, jeśli nasz plik KML jest zbyt duży / skomplikowany dla interfejsu API Map Google? [Zamknięte]

29

Nasza aplikacja internetowa zawiera proste funkcje mapowania (obecnie tylko markery i nakładki KML na osadzonej mapie Google). To działa całkiem dobrze; jedynym prawdziwym ograniczeniem, jakie napotykamy, są nakładki KML, które wykraczają poza ograniczenia wielkości i złożoności Google dla KML .

Zastanawiamy się nad postawieniem własnego serwera (np. GeoServer lub ArcGIS Server); ale wydaje się to ogromnym krokiem, aby podać (na przykład) 15 MB KML, gdy limit Google wynosi 10 MB.

Potrzebuję testu poprawności: czy istnieje jakiś pośredni związek między bezpłatnym i łatwym interfejsem API Google dla nakładek KML a konfiguracją własnego serwera kafelków?

Herb Caudill
źródło
5
podziel jeden KML na 2 mniejsze pliki KML - opcjonalne włączanie i wyłączanie danych, których nie potrzebujesz.
Mapperz
1
opcjonalnie użyj tabel syntezy (limit 100k wierszy lub 100mb danych) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/... patrz groups.google.com/group/fusion-tables-users-group/browse_thread/…
Mapperz
@mapperz Możesz przesłać tylko 100 MB danych jednocześnie, ale możesz zaimportować kolejne wiersze do tej samej tabeli do 250 MB pamięci.
geographika
Chociaż widzę, że już to wiesz
geographika
Usługa Fusion Tables została zamknięta 3 grudnia 2019 r., Więc widzę opcję zmniejszenia plików kml za pomocą oprogramowania - QGIS Desktop. istnieje również biblioteka python qgis. Użyłem pulpitu QGIS z opcją Uprość geometrię używając 0.0005. Następnie eksportuję utworzoną warstwę jako kml. Możesz to zrobić jako zadanie wsadowe również z tego samego menu. Następnie możesz otworzyć wszystkie utworzone warstwy w osobnym projekcie i za pomocą konsoli wewnątrz pulpitu QGIS przekonwertować wszystkie pliki .shp na .kml
makkasi

Odpowiedzi:

12

Ponieważ już zainwestowałeś w rozwój Map Google, zdecydowanie sugeruję przeniesienie wszystkich danych do Google Fusion Tables, które można następnie przeanalizować na mapie w podobny sposób jak KML z niewiarygodną wydajnością (patrz aplikacja WNYC Fusion Tables ). Rozważ to uaktualnienie do KML bez konieczności drastycznej modyfikacji interfejsu.

Gady
źródło
Myślę, że to świetny pomysł, jeśli Twoje dane nie są zgodne z> 24 godzinnym harmonogramem aktualizacji. Właśnie to powiedział nam Google (jeśli kml spowalnia przeglądarkę, użyj tabel fuzji), aby to zrobić, powiedziałbym, że to najlepsza odpowiedź.
Steve
1
Dzięki za wskazanie Stołów Fusion - to jakoś całkowicie umknęło mojej uwadze, bardzo fajnie. Niestety byłoby trochę niezręcznie pracować z danymi, które często się zmieniały; a ogólne ograniczenia miejsca (250 MB na użytkownika) nie pozwoliłyby nam na skalowanie.
Herb Caudill
2
Pamiętaj, że eksperymentalna usługa Fusion Tables zostaje zamknięta 3 grudnia 2019 r.
Jonas
12

Możesz podzielić swój KML na wiele KML z nadrzędnym KML odnoszącym się do mniejszych kml. Przynajmniej obniży to rozmiary plików do przyzwoitego poziomu i pozwoli odwoływać się do znacznie większych zestawów danych jako plików KML.

Szczerze mówiąc, KML jest naprawdę dobry tylko dla małych zestawów danych z kilkoma funkcjami i powiązanymi atrybutami. Nie zbliżyłbym się do niego jako źródła danych pliku. Jeśli patrzysz na powiększanie się tych plików, spojrzałbym na inny typ danych lub zdecydowanie skierowałem się w stronę GeoServer / MapServer dla rozproszonych zestawów danych.

OptimizePrime
źródło
2
Ale Network KML (z super-nakładkami są zaprojektowane dla dużych zestawów danych), ale wymaga serwera WWW i oprogramowania do renderowania Geoserver wykonuje dobrą robotę z tego rodzaju KMZ - działa najlepiej z Google Earth, ponieważ Google Maps API ograniczyło użycie KML.
Mapperz
Nigdy nie miałem dużo szczęścia z nakładkami, z wyjątkiem Google Earth Enterprise Client. Chociaż nie spędzałem z tym dużo czasu. Zdecydowanie opcja eksploracji, +1 @Mapperz
OptimizePrime
1
Używaj GeoServera z Oracle i działa bardzo dobrze, renderując KMZ (superpowłokę) - dane na żywo (stale aktualizowane) bardzo przydatne dla użytkowników - musiał dostosować geoserver, aby przyspieszyć odświeżanie.
Mapperz
8

Jeśli nie zainwestowałeś zbyt wiele czasu w interfejs API Map Google, możesz przełączyć się na OpenLayers, który ma parser KML po stronie klienta, który może czytać własne pliki KML - patrz przykład poniżej:

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

Jednak w przypadku pliku 15 MB prawdopodobnie zatrzyma to przeglądarkę. Prawdopodobnie jest również dość powolny przez serwery Google, gdy zbliżasz się do limitu rozmiaru pliku.

Czy naprawdę potrzebujesz poziomu 15 MB szczegółów, czy możesz uprościć KML bez utraty zbyt dużej ilości informacji?

Czy potrzebujesz dostępu do wektora / geometrii po stronie klienta? Czy te dane mogą być podawane jako obrazy?

Jeśli żadne z nich nie jest możliwe, będziesz musiał spojrzeć na oprogramowanie obsługujące mapę. Wraz z GeoServer z ArcGIS Server możesz rozważyć MapServer do obsługi KML lub jako WFS. Zaletą korzystania z serwera map jest to, że żądania zwrócą tylko dane z mapy - zmniejszając ruch w sieci i skracając czas ładowania.

geografia
źródło
Po wypróbowaniu tabel Google Fusion podejście Guddiego jest zdecydowanie najłatwiejsze do wdrożenia. Możesz przesłać tylko 100 MB KML na raz, ale każdy użytkownik ma opcję przechowywania 250 MB (w momencie pisania).
geographika
2

Jeśli używasz wersji 3, możesz usunąć wszystkie informacje o atrybutach oprócz unikalnego identyfikatora i zażądać tych informacji za pośrednictwem wywołań ajax do usługi sieci Web za każdym razem, gdy użytkownik kliknie funkcję. Jeśli masz ponad 10 MB punktów, prawdopodobnie dobrym pomysłem jest tworzenie klastrów zamiast wyświetlania wszystkich tych punktów jednocześnie. Możesz także rozdzielić nakładki naziemne na osobne pliki KML.

Peter Smith
źródło
2

MapLarge ma ciekawe rozwiązanie - mogą replikować dane na swoich serwerach, a następnie wykonywać ciężkie prace związane z generowaniem kafelków w locie za pomocą własnego oprogramowania. Oferują interfejsy API JavaScript, które mogą następnie nakładać je na mapy podstawowe z Map Google, OpenLayers itp.

Sprawdź niektóre z ich przykładów - prędkość robi wrażenie:

To nie jest darmowe, ale może być dobrą opcją dla kogoś, kto nie chce kłopotów i kosztów związanych z tworzeniem osobnego serwera, aby wygenerować te warstwy.

Herb Caudill
źródło