지오서비스웹(GEOSERVICE-WEB)

소 개

GEOSERVICE-WEB은 지오서비스(지리, 지도, 위치 등과 관련된 서비스)를 웹에서 제공합니다. 지오서비스웹의 목표는 웹에서 누구나 쉽게 지도 기반의 비지니스를 효과적으로 해결하기 위한 서비스를 제공하는데 있습니다. 웹브라우저에서 아래의 URL을 입력하여 이용할 수 있습니다.

www.geoservice.co.kr:777

지오서비스웹은 공간(Spatial)과 위치(Location)에 대한 다양한 서비스를 웹에서 이용할 수 있습니다. 예를 들어 지오코딩 등과 같은 기능을 이용해 공간 데이터를 생성하고 시각화할 수 있습니다. 또한 자신이 가진 데이터를 아카이브에 업로드하여 언제 어디서든 사용할 수 있으며 다른 사용자와 기본적으로 공유할 수 있습니다. 원한다면 내가 올린 데이터는 공유하지 않도록 설정할 수도 있습니다.

업데이트

FAQ

서비스 주요 기능들

주소를 좌표로 변환하는 지오코딩

지오코딩 기능은 주소를 좌표로 변환합니다. 처리할 수 있는 주소는 지번주소와 도로명주소이고 행정구역 명칭이 생략되어도 처리됩니다. 입력 데이터는 ① 컴마(,)로 분리된 CSV 형식이고 ② 인코딩은 UTF-8, ③ 확장자는 .csv(또는 .zip 압축)여야 합니다. 메모장과 같은 간단한 텍스트 편집기나 엑셀에서 쉽게 만들 수 있습니다.

좌표를 주소로 변환하는 리버스 지오코딩

리버스 지오코딩은 경위도 좌표를 주소로 변환합니다. 입력 데이터는 ① 컴마(,)로 분리된 CSV 형식이고 ② 인코딩은 UTF-8, ③ 확장자는 .csv(또는 .zip 압축)여야 합니다. 메모장과 같은 간단한 텍스트 편집기나 엑셀에서 쉽게 만들 수 있습니다. 결과는 지번 주소와 도로명 주소입니다.

앞으로

지오서비스웹이라는 이름의 모티브가 되는 동물이 있는데 그것은 거미입니다. 거미줄(Web)을 짜는 거미는 파리나 모기 등과 같은 해충을 잡아 먹어 해충의 개체수를 조절함으로써 전염병 발생을 막아 사람에게 이로움을 주는 동물입니다. 거미는 거미줄을 이용해 집을 만들고 사냥을 하거나 수십 킬로미터 거리의 하늘을 비행하는 등 그 재주가 매우 뛰어납니다. 지오서비스웹은 뛰어난 재주를 가진 거미처럼 사람들에게 이로움을 주고자 합니다. 앞으로 지오서비스웹을 통해 다양하고 유용한 서비스를 제공해 드리겠습니다.

pyQGIS를 이용한 벡터 데이터 처리 10 : 버퍼(Buffer) 연산

지오메트리에 대한 공간 연산을 공간 분석을 위해 활용할 수 있는데 그 연산 중 버퍼 연산에 대한 코드를 설명합니다. 먼저 레이어를 추가하고 RN이라는 필드의 값이 “로”로 끝나는 피쳐를 선택하고 선택된 피쳐의 지오메트리에 대해 버퍼 연산을 수행한 뒤 그 결과를 다른 SHP 파일에 저장하는 코드를 작성해 보겠습니다.

먼저 레이어를 추가하고 RN 필드값이 “로”로 끝나는 피쳐를 선택하는 코드를 다음처럼 작성합니다.

QgsProject.instance().removeAllMapLayers()
layer = QgsVectorLayer("D:/__Data__/세종특별자치시_36000/TL_SPRD_MANAGE.shp", "TL_SPRD_MANAGE")
QgsProject.instance().addMapLayers([layer])
layer.selectByExpression('"RN" like \'%로\'')

버퍼 연산 결과를 저장할 SHP 파일 작성자(Writer)를 생성합니다.

fields = layer.fields()
fileName = "D:/__Data__/buffer.shp"
writer = QgsVectorFileWriter(
    fileName,
    "utf-8", 
    fields,
    QgsWkbTypes.Polygon,
    layer.sourceCrs(),
    "ESRI Shapefile"
)

이제 선택된 피쳐를 하나씩 순회하면서 버퍼 연산을 수행하고 그 결과를 새로운 SHP 파일에 기록합니다.

dist = 100
features = layer.selectedFeatures()
for feat in features:
    geom = feat.geometry()
    buff = geom.buffer(dist, 8)
    feat.setGeometry(buff)
    writer.addFeature(feat)

del(writer) # 새로운 SHP 파일 닫기

새로운 SHP 파일을 레이어로 추가하는 코드는 다음과 같습니다.

layer = QgsVectorLayer(fileName, "새로운 레이어", "ogr")
QgsProject.instance().addMapLayers([layer])

실행 결과는 다음과 같습니다.