데이터 다운로드, 변환 및 표시 프로세스 기록

데이터 소스

어느 날 한 선배가 온라인 데이터 사본 다운로드를 도와달라고 요청했고, 분석 후 얻은 데이터는 현재 bbox 범위를 통해 geojson에 요청되었습니다. 주소는 다음과 같습니다.

https://xxxxxxxx/api/layers?layer=fields
south=xxx
north=xxx
east=xxx
west=xxx
zoom=xx
  • 데이터 다운로드

다운로드 창 범위의 데이터는 일반적으로 데이터 요청의 압력을 줄이기위한 것이며 동시에 데이터를 추출하고 소규모로 처리를 단순화하여 클라이언트와 서버에 대한 압력을 줄이는 데 사용할 수 있습니다.
다행히이 주소의 데이터는 데이터 처리를 단순화하지 않으므로 -180, 180, -90, 90 (웹 사이트에서 볼 수 있음) 범위에서 최대 확대 / 축소 수준을 직접 사용하고 데이터를 요청하여 json 데이터를 가져올 수 있습니다. .

데이터를 획득 한 후 표준 geojson 형식 데이터가 아니고 데이터의 양이 상대적으로 많은 것으로 확인되었습니다.
여기에 사진 설명 삽입

  • 형식 수정
    따라서 얻은 json 데이터를 GeoJSON 형식으로 변환하기 위해 여기서 데이터 처리를 간단히 수행하면됩니다. 여기서 모르는 친구들은 나를 개인적으로 믿을 수 있습니다.

  • Shapefile로 변환

원래는 ArcGIS를 통해이 문제를 해결하고 싶었지만 나중에 시도했지만 ArcGIS는 GeoJSON 형식 지원에 매우 친숙하지 않으며 EsriJSON 형식 집합을 가지고 있습니다. 그래서 저는 몇 줄의 코드로 작업을 완료하기 위해 geotools를 사용하는 것을 생각했고, geotools의 maven 종속성에 대한 생각은 상당히 많았고, 다운로드 속도는 여러 가지 이유로 약간 성가신 것입니다. 그래서 저는 GDAL을 생각 했습니다. 인터넷에서 다운로드 할 수있는 기성품 컴파일 된 gdal 버전이 있습니다 .
여기에 사진 설명 삽입
다운로드 후 다음과 같습니다. 관리자 권한으로 SDKShell.bat를 실행하고 다음 명령을 실행하여 데이터 변환을 완료합니다.

ogr2ogr -f "ESRI Shapefile" F:\Data\geojson\abc.shp F:\Data\geojson\data2.json

로딩 디스플레이

여기에서로드하는 데는 두 가지 목적이 있습니다. 하나는 현재 다운로드 된 GeoJSON 데이터를로드하는 것이고 다른 하나는 wms 레이어를 오버레이하여 GeoJSON 데이터의 정확성을 확인하는 것입니다.

여기에서는 mapbox-gl 예제에 html 템플릿을 적용했습니다.

여기서는 실제로 GeoJSON 데이터를로드하고 WMS 슬라이스를로드하는 핵심 코드 만 게시합니다.
WMS 슬라이스로드 :

map.addLayer({
    
    
            'id': 'wms_layer1',
            'type': 'raster',
            'source': {
    
    
                'type': 'raster',
                'tiles': [
                    '/geoserver/ows/mps?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png8&TRANSPARENT=true&LAYERS=mps_mapping_accumulation&STYLES=&SRS=EPSG:3857&CRS=EPSG:3857&TILED=true&apikey=xxx&BBOX={bbox-epsg-3857}&WIDTH=512&HEIGHT=512',
                ],
                'tileSize': 512
            },
            'paint': {
    
    
                "raster-opacity": 1,
            }
        });

로컬 geojson 파일로드

		map.addLayer({
    
    
            'id': 'route',
            'type': 'line',
            'source': {
    
    
                'type': 'geojson',
                'data': "/data-convert.json"
            },
            'layout': {
    
    'line-cap': 'round'},
            'paint': {
    
    
                'line-color': '#00ffff',
                'line-width': 1
            }
        })

시도하는 과정에서 원격 서버의 WMS 슬라이스에 도메인 간 문제가 있음을 발견했습니다. 또한 로컬 json 파일을로드 할 때 도메인 간 문제가 있으므로 여기서는 nginx를 간단한 역방향 프록시로 사용합니다.

server {
    
    
		listen 8088;
		server_name localhost;
		
		root F:/Data/geojson;  #这里放 html页面和json文件

		location /geoserver/ {
    
     #这里代理远程切片
			root   html;
            index  index.html index.htm;
            proxy_pass https://app.mapstand.com;
		}
	}

확인 후 다운로드 한 데이터에 문제가없는 것으로 확인되었습니다.여기에 사진 설명 삽입

추천

출처blog.csdn.net/polixiaohai/article/details/109008129