node Shapfile.GeoJSON과 GiitHub을 js로만 확인하기 전에
개시하다
이 보도는 노드다.js에서 Shappefile을 GeoJSON으로 변환하는 프로그램 라이브러리shapefile의 사용 방법을 소개합니다.
shape file 라이브러리는 GDAL과 iconv 등 로컬 도서관에 의존하지 않는 pure javascript 라이브러리이기 때문에 가져오기가 간단합니다.그리고 GeoJSON의 속성을 너무 고민하지 않는 것도 장점이다.
1. 대본
아오모리(靑森)현의 시가지 마치(町)마을 행정구역 다각형의 쉐퍼파일을 지오제이슨(GeoJSON)으로 전환해 경계선을 검은색으로 설정하고 내용을 노란색으로 채워 지티허브(GiitHub)로 올려 보여준다.
행정구역 다각형의 착수는 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03.html부터 시작하세요.다음 예에서는 N03-11500102_GML.zip이라는 2015년판을 사용하세요.
GiitHub에서 지원하는 GeoJSON의 스타일 속성은 https://help.github.com/articles/mapping-geojson-files-on-github/부터 시작합니다.이번에 다각형을 처리하기 때문에fill과strike의 관련 속성을 사용하지만 포인트 데이터의 경우marker와 관련된 속성을 사용할 수 있습니다.
2. 설치
다음 순서에 따라 환경을 준비하다$ unzip N03-150101_02_GML.zip
Archive: N03-150101_02_GML.zip
creating: N03-20150101_02_GML/
inflating: N03-20150101_02_GML/KS-META-N03-15_02_150101.xml
inflating: N03-20150101_02_GML/N03-15_02_150101.dbf
inflating: N03-20150101_02_GML/N03-15_02_150101.prj
inflating: N03-20150101_02_GML/N03-15_02_150101.shp
inflating: N03-20150101_02_GML/N03-15_02_150101.shx
inflating: N03-20150101_02_GML/N03-15_02_150101.xml
$ npm install frogcat/shapefile
[email protected] node_modules/shapefile
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])
$
아오모리(靑森)현의 시가지 마치(町)마을 행정구역 다각형의 쉐퍼파일을 지오제이슨(GeoJSON)으로 전환해 경계선을 검은색으로 설정하고 내용을 노란색으로 채워 지티허브(GiitHub)로 올려 보여준다.
행정구역 다각형의 착수는 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03.html부터 시작하세요.다음 예에서는 N03-11500102_GML.zip이라는 2015년판을 사용하세요.
GiitHub에서 지원하는 GeoJSON의 스타일 속성은 https://help.github.com/articles/mapping-geojson-files-on-github/부터 시작합니다.이번에 다각형을 처리하기 때문에fill과strike의 관련 속성을 사용하지만 포인트 데이터의 경우marker와 관련된 속성을 사용할 수 있습니다.
2. 설치
다음 순서에 따라 환경을 준비하다$ unzip N03-150101_02_GML.zip
Archive: N03-150101_02_GML.zip
creating: N03-20150101_02_GML/
inflating: N03-20150101_02_GML/KS-META-N03-15_02_150101.xml
inflating: N03-20150101_02_GML/N03-15_02_150101.dbf
inflating: N03-20150101_02_GML/N03-15_02_150101.prj
inflating: N03-20150101_02_GML/N03-15_02_150101.shp
inflating: N03-20150101_02_GML/N03-15_02_150101.shx
inflating: N03-20150101_02_GML/N03-15_02_150101.xml
$ npm install frogcat/shapefile
[email protected] node_modules/shapefile
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])
$
$ unzip N03-150101_02_GML.zip
Archive: N03-150101_02_GML.zip
creating: N03-20150101_02_GML/
inflating: N03-20150101_02_GML/KS-META-N03-15_02_150101.xml
inflating: N03-20150101_02_GML/N03-15_02_150101.dbf
inflating: N03-20150101_02_GML/N03-15_02_150101.prj
inflating: N03-20150101_02_GML/N03-15_02_150101.shp
inflating: N03-20150101_02_GML/N03-15_02_150101.shx
inflating: N03-20150101_02_GML/N03-15_02_150101.xml
$ npm install frogcat/shapefile
[email protected] node_modules/shapefile
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])
$
그리고 여기에 필자 포크frogcat/shapefile가 설치되어 있다.본가의 도서관이라면JIS 인코딩된 Shapefile을 제대로 처리할 수 없기 때문입니다.
3. 인코딩
다음 node.js 스크립트 만들기
main.js"use strict";
var shapefile = require("shapefile");
shapefile.read(process.argv[2], "shift_jis", function(error, geojson) {
geojson.features.forEach(function(feature) {
feature.properties["stroke"] = "#000";
feature.properties["stroke-opacity"] = 0.8;
feature.properties["stroke-width"] = 2;
feature.properties["fill"] = "#ff0";
feature.properties["fill-opacity"] = 0.5;
});
console.log(JSON.stringify(geojson, null, ""));
});
shapefile.read(filename,encoding,callback)
지정된 인코딩을 통해 지정된 SHP를 분석하고 변환된 Geojoson을 호출 함수에 전달한다.
호출 함수에서 Geojoson의 각feature에 대해 스케줄과 충전 속성을 설정합니다.
마지막으로 console.log
를 사용하여 지오존을 표준 출력으로 토합니다.
4. 실행
다음 순서에 따라 집행하다$ node main.js N03-20150101_02_GML/N03-15_02_150101.shp > out.geojson
완성된 지오제이슨을 지스트에 올리면 이런 느낌이 든다.순조롭게 진행되었다.
"use strict";
var shapefile = require("shapefile");
shapefile.read(process.argv[2], "shift_jis", function(error, geojson) {
geojson.features.forEach(function(feature) {
feature.properties["stroke"] = "#000";
feature.properties["stroke-opacity"] = 0.8;
feature.properties["stroke-width"] = 2;
feature.properties["fill"] = "#ff0";
feature.properties["fill-opacity"] = 0.5;
});
console.log(JSON.stringify(geojson, null, ""));
});
다음 순서에 따라 집행하다
$ node main.js N03-20150101_02_GML/N03-15_02_150101.shp > out.geojson
완성된 지오제이슨을 지스트에 올리면 이런 느낌이 든다.순조롭게 진행되었다.5. 요약
npm의 shape file 라이브러리를 사용하여 Shappefile을 GeoJSON으로 변환하는 방법을 소개했다.GiitHub 사용자라면 node와 npm은 기본적으로 가져오기 때문에 shape 2 Geojoson의 환경을 간단하게 준비할 수 있습니다.
집게http://turfjs.org/의 가공 등도 활용할 수 있다.
다만, shape file 라이브러리는 아직 개발 중이기 때문에 부호화와 일부 지원하지 않는 기능 등의 문제가 있습니다.이 경우 GDAL을 사용하여 GeoJSON을 처리하는 것이 좋습니다.
Reference
이 문제에 관하여(node Shapfile.GeoJSON과 GiitHub을 js로만 확인하기 전에), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/frogcat/items/051572ccf92e084db378
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(node Shapfile.GeoJSON과 GiitHub을 js로만 확인하기 전에), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/frogcat/items/051572ccf92e084db378텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)