WKB에서 WKT 로의 JavaScript 기능


10

json 이진 데이터 전송에 좋지 않습니다 . 그러나 HTML5를 사용하면 XHR2는 이제 Blob을 깨끗하게 전송할 수 있습니다. 대역폭을 절약하기 위해 이진 지오메트리를 전송하여 클라이언트에서 디코딩하려고합니다.

아무 소용이 없으므로 웹 기반 자바 스크립트 기반 WKB (Well-known Binary)WKT (Well-known Text) 함수로 검색했습니다. 휠을 재발 명하기 전에 오픈 소스 솔루션을 알고있는 사람이 있습니까?


Btw에서는 블롭을 사용하지 말고 배열 버퍼를 사용해야합니다.
Nicklas Avén

답변:


11

새롭고 더 잘 지원되는 JS WKB 파싱 라이브러리가 등장한 것 같습니다.

https://github.com/cschwarz/wkx

postgres에서 WKB를 브라우저에서 매핑 할 수있는 JS 객체로 직접 변환하는 데 사용할 수있었습니다. 웹 페이지에 https://github.com/cschwarz/wkx/blob/master/dist/wkx.js 를 포함시켜야 합니다.

// Required imports (works in browser, too)
var wkx = require('wkx');
var buffer = require('buffer');

// Sample data to convert
var wkbLonlat = '010100000072675909D36C52C0E151BB43B05E4440';

// Split WKB into array of integers (necessary to turn it into buffer)
var hexAry = wkbLonlat.match(/.{2}/g);
var intAry = [];
for (var i in hexAry) {
  intAry.push(parseInt(hexAry[i], 16));
}

// Generate the buffer
var buf = new buffer.Buffer(intAry);

// Parse buffer into geometric object
var geom = wkx.Geometry.parse(buf);

// Should log '-73.700380647'
console.log(geom.x)

// Should log '40.739754168'
console.log(geom.y)

1
이봐, 여기 OP 1.5 년 전에 물었습니다. 대박!
Jordan Arseno 1

7

내가 지금까지 찾은 유일한 솔루션 인 순수한 자바 스크립트 솔루션은 https://github.com/thejefflarson/wkb.js 입니다. 불완전한 WKB 파서 일뿐입니다 (WKB를 WKT로 변환 할 수있는 js 객체로 변환합니다)

자바 스크립트 측면에서 wkb를 대체하는 다른 방법은 실험 twkb (현재 표준이 아님) http://blog.jordogskog.no/2013/05/05/mapservice-from-websocket-with-twkb/가 될 수 있지만 필요합니다. 커스텀 PostGIS 빌드로 플레이하기 (실제로는 초보자가 아닙니다)


3

또 다른 가능성 은 일반 GeoJSON 대신 TopoJSON 을 사용 하는 것입니다.

TopoJSON 은 토폴로지를 인코딩하는 GeoJSON의 확장입니다. TopoJSON 파일의 형상은 이산 적으로 형상을 나타 내기보다는 arcs 라는 공유 선 세그먼트에서 함께 연결됩니다 . TopoJSON은 중복성을 제거하여 GeoJSON보다 훨씬 컴팩트 한 형상 표현을 제공합니다. 일반적인 TopoJSON 파일은 GeoJSON 파일보다 80 % 작습니다.


3

ThomasG77에서 언급했듯이이 "twkb"형식의 이진 데이터를 사용하고 있습니다.

여기 에서 실제로 볼 수 있습니다 (웹 소켓 예제)

또는 here , PHP 구현.

파싱을 연구하려면 twkb.js 파일을 확인하십시오. 내가 생각하는 twkb_node 예제에서는 약간 더 깨끗합니다.

에서 블로그 게시물 당신은 PostGIS와 부분의 소스 코드 형식의 일부 설명에 대한 링크를 찾을 수 있습니다.

나는 이후로 재 작업을 수행했으며 곧 github에 새로운 설명을 넣을 것입니다. 나는 twkb를 믿지만 좋은 것을 얻으려면 더 많은 두뇌가 필요합니다.

물론 wkb를 파싱 할 수도 있지만 gzipped geojson에 비해 대역폭이 없습니다. 나는 그것이 얼마나 작은 지 놀랐습니다. 두 번째 링크를 참조하여 geojson과 twkb의 크기를 확인하십시오. WKB는 twkb보다 약 2-6 배 더 큽니다.


0

이 답변은 wkb to wkt 기능에 관한 것이 아닙니다.

wkt에서 wkb 로의 변환을 사용하여 밴드와 함께 저장하지 말아야한다고 말하고 싶습니다-서버에 wkt (또는 다른 형식)가 충분하고 브라우저가 압축을 풀 수 있어야합니다. 즉시 그리고 상자 밖으로.

XHTMLRequest2에 대한 브라우저 지원 테이블 을 살펴보십시오. XHTMLRequest2는 이전 버전이지만 아직 사용중인 일부 브라우저에서는 지원되지 않습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.