Okazuje się, że json nie jest tak dobry w transporcie danych binarnych. Ale dzięki HTML5 XHR2 jest teraz w stanie czysto przenosić obiekty BLOB . Chcę przenieść geometrię binarną (w celu zaoszczędzenia przepustowości) i zdekodować ją na kliencie.
Bezskutecznie przeszukałem sieć w poszukiwaniu funkcji WKB (dobrze znany plik binarny) do WKT (dobrze znany tekst) . Zanim ponownie wymyślę koło - czy ktoś zna jakieś rozwiązania typu open source?
javascript
wkt
well-known-binary
Jordan Arseno
źródło
źródło
Odpowiedzi:
Wygląda na to, że pojawiła się nowa i lepiej obsługiwana biblioteka parsująca JS WKB.
https://github.com/cschwarz/wkx
Byłem w stanie go użyć do konwersji WKB bezpośrednio z postgresu na obiekty JS, które można mapować w przeglądarce. Aby to działało, musisz dołączyć https://github.com/cschwarz/wkx/blob/master/dist/wkx.js na swojej stronie internetowej.
źródło
Jedynym rozwiązaniem, które do tej pory znalazłem (a nie próbowałem), jest javascript, to https://github.com/thejefflarson/wkb.js . To tylko niekompletny parser WKB (konwertuje WKB na obiekt js, który można przekształcić w WKT)
Alternatywnym sposobem na wkb po stronie javascript może być eksperymentalny twkb (obecnie nie jest to standard) http://blog.jordogskog.no/2013/05/05/mapservice-from-websocket-with-twkb/, ale wymaga grać z niestandardową wersją PostGIS (więc naprawdę nie dla początkujących)
źródło
Inną możliwością może być użycie TopoJSON zamiast zwykłego GeoJSON:
źródło
Jak wspomniałem ThomasG77, bawiłem się danymi binarnymi w tym formacie „twkb”.
możesz to zobaczyć tutaj w akcji (przykład gniazda sieciowego)
lub tutaj implementacja php.
Jeśli chcesz przestudiować analizowanie, sprawdź plik twkb.js. Myślę, że jest to trochę czystsze w przykładzie twkb_node.
W tym poście na blogu można znaleźć link do kodu źródłowego części PostGIS oraz opis formatu.
Od tego czasu dokonałem przeróbek i wkrótce opublikuję nowy opis na github. Wierzę w twkb, ale potrzeba więcej mózgów, aby być dobrym.
Oczywiście możesz również parsować wkb, ale nie zyskasz przepustowości w porównaniu do gzipped geojson. Byłem zaskoczony, jak małe to się stało. Zobacz drugi link i sprawdź rozmiary geojson vs twkb. WKB jest około 2-6 razy większy niż twkb.
źródło
Ta odpowiedź nie dotyczy funkcji wkb to wkt.
Powiedziałbym, że nie powinieneś używać konwersji z wkt do wkb tylko w celu zapisania pasma - gzipping wkt (lub inny format, który tam masz) na serwerze powinien być więcej niż wystarczający (i najprawdopodobniej - bardziej wydajny), a przeglądarki mogą rozpakować w locie i po wyjęciu z pudełka.
Zobacz także tabele obsługi przeglądarki dla XHTMLRequest2, ponieważ nie jest obsługiwane w niektórych starszych, ale wciąż używanych przeglądarkach.
źródło
GeoScript ma JavaScript API, który odczytuje i zapisuje WKT i WKB. Metody są częścią geom.io.
źródło