json 은 이진 데이터 전송에 좋지 않습니다 . 그러나 HTML5를 사용하면 XHR2는 이제 Blob을 깨끗하게 전송할 수 있습니다. 대역폭을 절약하기 위해 이진 지오메트리를 전송하여 클라이언트에서 디코딩하려고합니다.
아무 소용이 없으므로 웹 기반 자바 스크립트 기반 WKB (Well-known Binary) 를 WKT (Well-known Text) 함수로 검색했습니다. 휠을 재발 명하기 전에 오픈 소스 솔루션을 알고있는 사람이 있습니까?
json 은 이진 데이터 전송에 좋지 않습니다 . 그러나 HTML5를 사용하면 XHR2는 이제 Blob을 깨끗하게 전송할 수 있습니다. 대역폭을 절약하기 위해 이진 지오메트리를 전송하여 클라이언트에서 디코딩하려고합니다.
아무 소용이 없으므로 웹 기반 자바 스크립트 기반 WKB (Well-known Binary) 를 WKT (Well-known Text) 함수로 검색했습니다. 휠을 재발 명하기 전에 오픈 소스 솔루션을 알고있는 사람이 있습니까?
답변:
새롭고 더 잘 지원되는 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)
내가 지금까지 찾은 유일한 솔루션 인 순수한 자바 스크립트 솔루션은 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 빌드로 플레이하기 (실제로는 초보자가 아닙니다)
ThomasG77에서 언급했듯이이 "twkb"형식의 이진 데이터를 사용하고 있습니다.
또는 here , PHP 구현.
파싱을 연구하려면 twkb.js 파일을 확인하십시오. 내가 생각하는 twkb_node 예제에서는 약간 더 깨끗합니다.
에서 이 블로그 게시물 당신은 PostGIS와 부분의 소스 코드 형식의 일부 설명에 대한 링크를 찾을 수 있습니다.
나는 이후로 재 작업을 수행했으며 곧 github에 새로운 설명을 넣을 것입니다. 나는 twkb를 믿지만 좋은 것을 얻으려면 더 많은 두뇌가 필요합니다.
물론 wkb를 파싱 할 수도 있지만 gzipped geojson에 비해 대역폭이 없습니다. 나는 그것이 얼마나 작은 지 놀랐습니다. 두 번째 링크를 참조하여 geojson과 twkb의 크기를 확인하십시오. WKB는 twkb보다 약 2-6 배 더 큽니다.
이 답변은 wkb to wkt 기능에 관한 것이 아닙니다.
wkt에서 wkb 로의 변환을 사용하여 밴드와 함께 저장하지 말아야한다고 말하고 싶습니다-서버에 wkt (또는 다른 형식)가 충분하고 브라우저가 압축을 풀 수 있어야합니다. 즉시 그리고 상자 밖으로.
XHTMLRequest2에 대한 브라우저 지원 테이블 을 살펴보십시오. XHTMLRequest2는 이전 버전이지만 아직 사용중인 일부 브라우저에서는 지원되지 않습니다.