Resulta que json no es tan bueno transportando datos binarios. Pero con HTML5, XHR2 ahora es capaz de transferir blobs limpiamente. Estoy buscando transferir geometría binaria (para ahorrar ancho de banda) y decodificarla en el cliente.
En vano, he buscado en la web una función WKB (Binario conocido) basada en JavaScript a WKT (Texto conocido) . Antes de reinventar la rueda, ¿alguien conoce alguna solución de código abierto?
javascript
wkt
well-known-binary
Jordan Arseno
fuente
fuente
Respuestas:
Parece que desde entonces apareció una biblioteca de análisis JS WKB nueva y mejor compatible.
https://github.com/cschwarz/wkx
He podido usarlo para convertir WKB directamente de postgres en objetos JS que se pueden asignar en el navegador. Deberá incluir https://github.com/cschwarz/wkx/blob/master/dist/wkx.js en su página web para que esto funcione.
fuente
La única solución de javascript puro que he encontrado hasta ahora (y no probé) es https://github.com/thejefflarson/wkb.js . Es solo un analizador de WKB incompleto (convierte WKB en un objeto js que puede transformar en WKT)
Una forma alternativa de wkb en javascript puede ser el twkb experimental (no es un estándar en este momento) http://blog.jordogskog.no/2013/05/05/mapservice-from-websocket-with-twkb/ pero requiere jugar con una compilación personalizada de PostGIS (así que realmente no es para principiantes)
fuente
Otra posibilidad podría ser usar TopoJSON en lugar de GeoJSON simple:
fuente
Como mencionó ThomasG77, he estado jugando con datos binarios en este formato "twkb".
puedes verlo en acción aquí (un ejemplo de websocket)
o aquí , una implementación de php.
Si desea estudiar el análisis, verifique el archivo twkb.js. Es un poco más limpio en el ejemplo twkb_node, creo.
En esta publicación de blog puede encontrar un enlace al código fuente de la parte de PostGIS y alguna descripción del formato.
He revisado un poco desde entonces y pronto pondré una nueva descripción en github. Creo en twkb, pero necesita más cerebro para recuperarse.
Por supuesto, también puede analizar wkb, pero no obtendrá ancho de banda en comparación con geojson comprimido. Me sorprendió lo pequeño que se volvió. Vea el segundo enlace y verifique los tamaños de geojson vs twkb. WKB es aproximadamente 2-6 veces más grande que twkb.
fuente
Esta respuesta no se trata de la función wkb to wkt.
Yo diría que no debería usar la conversión de wkt a wkb solo para ahorrar ancho de banda: gzipping wkt (u otro formato que tenga allí) en el servidor debería ser más que suficiente (y muy probablemente más eficiente) y los navegadores pueden descomprimir sobre la marcha y fuera de la caja.
Mire también las tablas de soporte del navegador para XHTMLRequest2, ya que no es compatible con algunos navegadores más antiguos pero aún utilizados.
fuente
GeoScript tiene una API de Javascript que lee y escribe WKT y WKB. Los métodos son parte de geom.io.
fuente