Acontece que o json não é tão bom no transporte de dados binários. Mas com o HTML5, o XHR2 agora é capaz de transferir blobs de maneira limpa. Estou procurando transferir geometria binária (para economizar largura de banda) e decodificá-la no cliente.
Sem sucesso, procurei na Web uma função WKB (Well-known Binary) baseada em javascript para WKT (Texto conhecido) . Antes de reinventar a roda - alguém está ciente de alguma solução de código aberto?
javascript
wkt
well-known-binary
Jordan Arseno
fonte
fonte
Respostas:
Parece que uma nova e melhor suportada biblioteca de análise JS WKB apareceu desde então.
https://github.com/cschwarz/wkx
Consegui usá-lo para converter o WKB diretamente do postgres em objetos JS que podem ser mapeados no navegador. Você precisará incluir https://github.com/cschwarz/wkx/blob/master/dist/wkx.js na sua página da Web para que isso funcione.
fonte
A única solução de javascript puro que encontrei até agora (e não tentei) é https://github.com/thejefflarson/wkb.js . É apenas um analisador WKB incompleto (ele converte WKB em um objeto js que você pode transformar em WKT)
Uma maneira alternativa de wkb no lado do javascript pode ser o twkb experimental (não é um padrão no momento) http://blog.jordogskog.no/2013/05/05/mapservice-from-websocket-with-twkb/, mas requer para jogar com uma compilação PostGIS personalizada (realmente não para iniciantes)
fonte
Outra possibilidade pode ser usar o TopoJSON em vez do GeoJSON simples:
fonte
Como mencionado por ThomasG77, eu tenho jogado com dados binários neste formato "twkb".
você pode vê-lo em ação aqui (um exemplo de websocket)
ou aqui , uma implementação php.
Se você deseja estudar a análise, verifique o arquivo twkb.js. É um pouco mais limpo no exemplo twkb_node, eu acho.
Em este post pode encontrar link para o código-fonte da parte PostGIS e alguns descrição do formato.
Fiz algumas reformulações desde então e em breve colocarei uma nova descrição no github. Eu acredito em twkb, mas ele precisa de mais inteligência para melhorar.
Obviamente, você também pode analisar o wkb, mas não terá largura de banda em comparação com o geojson compactado com gzip. Fiquei surpreso com o quão pequeno isso ficou. Veja o segundo link e verifique os tamanhos do geojson vs twkb. WKB é cerca de 2-6 vezes maior que twkb.
fonte
Esta resposta não é sobre a função wkb to wkt.
Eu diria que você não deve usar a conversão de wkt para wkb apenas para salvar a largura de banda - gzipping wkt (ou outro formato existente) no servidor deve ser mais do que suficiente (e provavelmente - mais eficiente) e os navegadores podem descompactar na mosca e fora da caixa.
Consulte também as tabelas de suporte ao navegador para XHTMLRequest2, pois ele não é suportado em alguns navegadores mais antigos, mas ainda usados.
fonte
O GeoScript possui uma API Javascript que lê e grava WKT e WKB. Os métodos fazem parte do geom.io.
fonte