Оказывается, JSON не так хорош в передаче двоичных данных. Но с HTML5, XHR2 теперь способен чисто передавать двоичные объекты . Я ищу для передачи двоичной геометрии (чтобы сохранить пропускную способность) и декодировать ее на клиенте.
Безрезультатно, я искал в Интернете функцию WKB (общеизвестный бинарный код ) на основе JavaScript в WKT (общеизвестный текст) . Прежде чем я изобрету колесо - кто-нибудь знает какие-либо решения с открытым исходным кодом?
javascript
wkt
well-known-binary
Джордан Арсено
источник
источник
Ответы:
Похоже, с тех пор появилась новая, лучше поддерживаемая библиотека синтаксического анализа JS WKB.
https://github.com/cschwarz/wkx
Я смог использовать его для преобразования WKB напрямую из postgres в объекты JS, которые можно отображать в браузере. Вам нужно будет включить https://github.com/cschwarz/wkx/blob/master/dist/wkx.js на свою веб-страницу, чтобы это работало.
источник
Единственное решение, которое я нашел на чистом javascript (и я не пробовал), это https://github.com/thejefflarson/wkb.js . Это только неполный анализатор WKB (он преобразует WKB в объект js, который можно преобразовать в WKT)
Альтернативным способом использования wkb на стороне javascript может быть экспериментальный twkb (на данный момент не является стандартным) http://blog.jordogskog.no/2013/05/05/mapservice-from-websocket-with-twkb/, но для этого требуется играть с пользовательской сборкой PostGIS (так что на самом деле не для начинающих)
источник
Другой возможностью может быть использование TopoJSON вместо простого GeoJSON:
источник
Как упомянул ThomasG77, я играл с двоичными данными в этом формате «twkb».
Вы можете увидеть это в действии здесь (пример websocket)
или здесь , реализация PHP.
Если вы хотите изучить синтаксический анализ, проверьте файл twkb.js. Я думаю, это немного чище в примере twkb_node.
В этой записи блога вы можете найти ссылку на исходный код части PostGIS и описание формата.
С тех пор я сделал некоторые переделки и вскоре добавлю новое описание на github. Я верю в twkb, но для этого нужно больше мозгов.
Конечно, вы также можете анализировать wkb, но вы не получите никакой пропускной способности по сравнению с gzipped geojson. Я был удивлен, насколько маленьким это стало. Посмотрите вторую ссылку и проверьте размеры geojson vs twkb. WKB примерно в 2-6 раз больше, чем twkb.
источник
Этот ответ не о функции wkb to wkt.
Я бы сказал, что вам не следует использовать преобразование из wkt в wkb просто для сохранения пропускной способности - gzipping wkt (или другого имеющегося у вас формата) на сервере должно быть более чем достаточно (и, скорее всего, более эффективно), а браузеры могут разархивировать на лету и из коробки.
Посмотрите также таблицы поддержки браузеров для XHTMLRequest2, поскольку они не поддерживаются в некоторых старых, но все еще используемых браузерах.
источник
GeoScript имеет Javascript API, который читает и записывает WKT и WKB. Методы являются частью geom.io.
источник