QGIS에서 내보낸 GeoJSON 파일의 규격에 맞지 않는 항목

7673 단어 mapgisQGIStech
※ 이 기사를 집필할 때(2021-07-08)의 최신판(버전 3.20.0)을 전제로 한 이야기입니다.

무슨 문제 있어요?


GeoJSON 사양로서 각 Feature의 맨 위에 id(SHOULD)를 유지해야 한다.
QGIS로 벡터 파일을 편집하여 GeoJSON 파일로 저장할 때 직접 조작하면 각 Feature의 최고 레벨에 id가 저장되지 않습니다.QGIS에서의 GUI 작업이 후면에서 동작하는ogr2 ogr에 적절한 매개 변수를 전달하지 않았기 때문이다.그러므로
  • QGIS를 통해 출력된 GeoJSON 파일은 규격에 따른 다른 소프트웨어(OpenLayers 또는 Mapbox GL JS 등)가 기대하는 동작을 실행하지 않습니다
  • 상단에 id가 저장된 GeoJSON을 QGIS로 편집하면 id가 사라집니다
  • 이런 문제가 있다.

    규격에 따르면 id로 최고급 수준을 유지해야 합니다


        {
          "type": "Feature",
          "id": "my_id",
          "properties": {
            "prop2": "prop2",
            "prop3": "prop3",
          },
          "geometry": {
            "type": "Point",
            "coordinates": [
              139.338925252999985,
    	  35.622448612999982
            ]
          }
        },
    

    GeoJSON 사양의 해당 위치에 대한 설명


    If a Feature has a commonly used identifier, that identifier SHOULD be included as a member of the Feature object with the name "id", and the value of this member is either a JSON string or number.
    Feature에 일반적으로 사용되는 식별자가 있다면, 이 식별자는 'id' 의 이름으로 Feature 대상의 구성원으로 포함되어야 한다.구성원의 값은 JSON의 문자열 또는 숫자입니다.
    The GeoJSON Format

    해결책


    속성표에 저장한 다음 출력할 때 맨 위로 이동합니다


    속성표에 id (맨 오른쪽 열) 를 저장하면

    위와 같은'기준이라면...'에 비유하면 이 상태가 된다.
        {
          "type": "Feature",
          "properties": {
            "id": "my_id",
            "prop2": "prop2",
            "prop3": "prop3",
          },
          "geometry": {
            "type": "Point",
            "coordinates": [
              139.338925252999985,
    	  35.622448612999982
            ]
          }
        },
    
    내보내기 기능을 사용하여 부동산을 내보낼 때 사용자 정의 옵션의 레이어 표시줄에 다음과 같은 지정을 입력합니다.
    id_field=id
    

    결과적으로 속성표에 존재하는 id는 각 Feature의 맨 위로 이동합니다.
        {
          "type": "Feature",
          "id": "my_id",
          "properties": {
            "prop2": "prop2",
            "prop3": "prop3",
          },
          "geometry": {
            "type": "Point",
            "coordinates": [
              139.338925252999985,
    	  35.622448612999982
            ]
          }
        },
    

    ogr2ogr 사용


    속성표에 id가 존재하는 경우 GeoJSON으로 저장하면 조개 명령 등으로ogr2 ogr을 사용하여 수정할 수 있습니다.
    ogr2ogr output.geojson input.geojson -lco id_field=id 
    

    참고 자료

  • https://github.com/qgis/QGIS/issues/40805
  • 좋은 웹페이지 즐겨찾기