Sqlview 동적 지도 층 발표 방법

1.SQL 뷰 소개
Geoserver+postgresql+openlayers(leaflet)는 현재 주류 의 gis 개발 도구 입 니 다.Postgresql 은 지도 데 이 터 를 저장 하 는 데 사 용 됩 니 다.geoserver 는 지도 데 이 터 를 발표 하 는 데 사 용 됩 니 다.openlayers 나 leaflet 는 지 도 를 발표 하 는 데 사 용 됩 니 다.정상 적 인 상황 에서 shapefile 형식의 데이터 가 post gresql 데이터베이스 에 가 져 온 후에 우 리 는 geoserver 를 통 해 모든 데 이 터 를 발표 해 야 접근 할 수 있 습 니 다.일반적인 상황 에서 이런 조작 방식 은 문제 가 없다.지 도 는 기초 서비스 로 서 일단 발표 되면 변 하지 않 기 때문이다.그러나 실내 지도 에 있어 서 는 안 된다.만약 에 한 백화점 에 5 층 이 있 고 한 층 에 5 개의 지도 층 이 있다 면 이런 백화점 에 대해 서 는 이 25 개의 지도 층 을 geoserver 에서 모두 발표 해 야 이 백화점 의 모든 지 도 를 방문 할 수 있다.만약 에 이 백화점 의 25 개의 그림 을 발표 하 는 것 을 참 을 수 있다 면 수천 개의 백화점 지 도 를 발표 하 는 것 을 참 을 수 있 습 니까?못 참 겠 으 면 어떻게 든 해결 해 야 지.지 도 를 발표 하 는 것 은 기계 적 으로 반복 되 는 일이 기 때문에,우 리 는 우리 가 이 일 을 완성 하 는 것 을 도 울 방법 을 생각해 낼 수 있 습 니까?이때 가 바로 우리 의 sqlView 가 등장 했다.
먼저 sql View 를 소개 합 니 다.SQLViews 를 통 해 다음 과 같은 일 을 할 수 있 습 니 다.
(1)데이터베이스 view 는 geoserver 에서 표 와 똑 같이 발표 할 수 있 으 며,geoserver 의 SQLViews 는 간단 한 조회 발 표를 실현 할 수 있 을 뿐만 아니 라,파 라 메 터 를 조회 보기 의 조건 으로 입력 할 수 있다.
(2)SQLViews 는 데이터베이스 의 저장 과정 이나 function 을 발표 하여 더욱 복잡 한 논리 조작 과 조 회 를 수행 할 수 있다.
(3)SQL 뷰 조 회 는 문자열 을 바 꾸 는 방식 으로 매개 변 수 를 할 수 있 습 니 다.매개 변 수 는 wms 와 wfs 에서 총 사용 을 요청 할 수 있 습 니 다.입력 값 은 설 정 된 정규 표현 식 을 통 해 검증 하여 SQL 주입 공격 의 위험 을 제거 할 수 있 습 니 다.
(4)SQLViews 는 데이터베이스 조작 과 조회 의 결과 로 wfs 를 사용 할 수 없습니다.t.그것 을 조작 하지만 wfs,wms 는 정상적으로 요청 하거나 조회 할 수 있 습 니 다.
2.쿼 리 조건 이 있 는 SQL 뷰 보기 만 들 기:
(1)geoserver 에 로그 인하 여 그림 층 을 클릭 하고 작업 공간 을 선택 하 며 새 그림 층 을 만 듭 니 다.
(2)SQL 뷰 보기 그림 을 새로 만 들 고 발표 합 니 다.


들 어 오 는 표 이름 데 이 터 를 발표 하 는 보 기 를 만 들 었 습 니 다.
tbl 의 기본 값 은 데이터베이스 에 항상 존재 하 는 표 로 설정 되 어 있 으 며,정규 표현 식 은 알파벳 숫자 와 밑줄 만 입력 할 수 있 도록 설정 되 어 있 습 니 다.


출력 결과 의 유형 과 좌표계 에 속성 값 을 설정 하 였 습 니 다.
(3)그래 픽 접근
wms 를 통 해 지 도 를 가 져 올 때 tbl 의 값 을 viewprams 를 통 해 전달 하면 됩 니 다.
http://10.20.135.14/geoserver/parking/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=parking%3AvTingchewei&CRS=EPSG%3A4326&STYLES=&WIDTH=2700&HEIGHT=1200&BBOX=20.02708134918213%2C110.33805803565978%2C20.03351865081787%2C110.3525419643402&viewparams=tbl%3Awanghaiguojia_b2_tingchewei
viewprams 형식 은 보통 viewprams=p1:v1 입 니 다.p2:v2;…몇 개의 인 자 를 추가 할 수 있 습 니 다.서로 다른 매개 변수 사이 에분리,단일 매개 변 수 는 키 값 쌍,즉 p1 은 매개 변수 이름 이 고 v1 은 매개 변수 값 입 니 다.
발 표 된 보기 에 wms 방식 으로 접근 하 는 방법 은 다음 과 같 습 니 다.

var params = {
LAYERS:'parking:vTingchewei',
FORMAT:'image/png'
};
varviewparams = [
'tbl:wanghaiguojia_b2_tingchewei'
];
params.viewparams= viewparams;
varvTingchewei = new ol.layer.Image({
source:new ol.source.ImageWMS({
url:'http://10.20.135.14/geoserver/parking/wms', 
params:params,
serverType:'geoserver',
})
});
이 를 통 해 더 많은 백화점 은 geoserver 에서 5 번 의 보 기 를 발표 하면 되 며,이 보 기 를 발표 하 는 코드 는 geoserver 에 미리 기록 하여 포장 할 수 있 습 니 다.이렇게 하면 이 시스템 은 어떤 백화점 에서 도 지 도 를 발표 할 필요 가 없다.
3.function 을 포함 하 는 SQL View 보기 만 들 기
도면 발표 문 제 를 해결 하고 드디어 한숨 돌 릴 수 있 게 되 었 다.하지만 까다 로 운 문제 가 뒤에 있 을 줄 은 몰 랐 다.지도자 가 실내 내 비게 이 션 기능 을 하 게 하 다.하면 되 지,누가 우 리 를 핍박 하 는 부농 이 라 고 하 겠 니?그럼 실내 내 비게 이 션 을 어떻게 해 야 하나 요?이 기능 을 하기 전에 계획 을 세 워 야 겠 어 요.먼저 최 단 경로 조회 알고리즘 을 써 야 합 니 다.그리고 경 로 를 조회 할 때 출발점 과 종점 의 위치 입력 알고리즘 만 조회 하면 됩 니 다.마지막 으로 조회 결 과 를 wms 나 wfs 방식 으로 가 져 와 지도 에 표시 합 니 다.
가장 짧 은 경로 계획 알고리즘 을 작성 할 때 필요 한 입력 은 사용자 가 있 는 층 의 도로 이름,출발점 과 종점 의 위 치 를 입력 한 다음 에 우 리 는 끙끙 거 리 며 3 박 3 일 동안 싸 우 고 해결 합 니 다.
이 어 조회 하기 쉽 습 니 다.위 에 있 는 대로 놓 으 세 요.이 백화점 의 5 개 층 을 모두 해당 하 는 층 의 결과 경 로 를 바탕 으로 보 기 를 발표 합 니 다.기지 가 있 죠?NO,NO,NO!일이 생 겨 서 머리 를 못 쓰 겠 네.이 럴 때 새로운 방법 을 바 꿔 야 합 니 다.최 단 경로 계획 알고리즘 을 하나의 Function 으로 작성 하여 post gresql 데이터베이스 에 삽입 해 야 합 니 다.이 function 의 입력 매개 변 수 는 사용자 가 있 는 층,출발점 위치,종점 위치 입 니 다.출력 매개 변 수 는 출발점 과 종점 이 직접 지나 가 는 점 좌표 입 니 다.


마지막 으로 wms 나 wfs 를 통 해 얻 은 최 단 경로 결 과 를 얻 으 면 됩 니 다.
위 에서 기술 한 소 편 을 실현 하여 여러분 에 게 소개 한 Sqlview 동적 으로 지도 층 을 발표 하 는 방법 이 여러분 에 게 도움 이 되 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기