도메인 domains/위치 기반 Location-based 8

Q. OSM 데이터 모델의 기본 구성 요소는?

A. 기본 구성 요소 4가지는 Node, Way, Relation, Tag다(출처: 오픈스트리트맵 위키 Elements). OSM이란?OSM은 Open Street Map의 줄임말로 개방형 지도를 만들고 배포하는 프로젝트명이다(출처: 오픈스트리트맵 위키 처음 화면). OSM 데이터 모델개방형 지도를 만들기 위해서 필요한 데이터를 저장하기 위해 필요한 모델을 데이터 모델이라고 한다. OSM은 지도 데이터를 저장할 때 XML 포맷을 사용한다. 이렇게 저장한 지도 정보 OSM XML 파일을 불러와서 JOSM 같은 프로그램을 통해서 편집할 수 있다. OSM XML 포맷 예시(출처: 오픈스트리트맵 위키 OSM XML) ... ... ... ... ..

Q. JOSM에서 한 점을 움직였을 때 여러 선이 한꺼번에 움직이는 원리는?

A. 점node에 id가 부여되어 있기 때문에 가능하다. 아래 그림처럼 한 점을 움직였을 때 해당 점과 관련된 여러 선이 한꺼번에 움직인다. 다른 편집툴은 보통 한꺼번에 움직이지 않는다. OSM 파일을 보면 아래와 같다. 4개의 점node와 2개의 선way로 이루어져 있다. 선way 정보는 변경이 없고, 점node의 좌표값이 변경되는 것이다.

Q. OSM 파일을 GeoJSON으로 변환하면 어떻게 바뀔까?

A. GeoJSON 데이터가 Feature로 바뀐다. osm을 GeoJSON으로 바꿔주는 파이썬 팩키지 osm2geojson을 활용해서 바꿔보자. 코드는 아래와 같다. 예제 코드를 그대로 활용하고 결과인 json을 파일로 저장한 코드다. import codecs import json import osm2geojson with codecs.open('sample.osm', 'r', encoding='utf-8') as data: xml = data.read() geojson = osm2geojson.xml2geojson(xml, filter_used_refs=False, log_level='INFO') with open("result.json", "w") as f: json.dump(geojson, f) ..

JOSM을 데이터베이스에 저장한다면 어떻게 설계해야 할까?

JOSM 구조 그대로 설계할 수 있을 거 같다. 예제 JOSM의 출처는 https://learnosm.org/ko/josm/start-josm/ 다. node node는 위 예처럼 lat, lon 좌표값을 갖고 있고, 태그들을 갖고 있다. 또 태그는 id가 없다. 태그의 경우 shop, shoes를 하나 만들고 계속 쓰기보다는 node에 종속된 느낌이다. node : tag = 1 : n 관계로 표현할 수 있다. 위 내용을 통해서 node 테이블이 필요하고, tag 테이블이 필요하다는 것을 알 수 있다. 테이블 node { id int [pk] created_at timestamp coordinates geometry[Point] } 테이블 node_tag { node_id int [pk] k varch..

JOSM 주요 용어Terminology 살펴보기

JOSM을 제대로 사용하려면 JOSM에서 사용하는 주요 전문 용어를 살펴볼 필요가 있다. JOSM Wiki 첫 소개에 전문 용어부터 나온다. 용어는 총 5가지다. Node, Way, Relation, Area, Tag. 하나씩 원문과 함께 살펴보자. Node A Node is a point. 노드는 하나의 점이다. Way A way is a line connecting multiple nodes. Way, therefore, is a general term for series of joined nodes, not just for roads or ways in reality. 길은 여러 노드들을 연결하는 하나의 선이다. 그래서 길의 실제의 도로나 경로만을 뜻하는 것이 아니라 연결된 노드의 연속을 일반적으로..

Q. JOSM이란?

A. 자바로 만들어진 OpenStreetMap(OSM) 무료 확장 가능한 에디터다. 공식 홈페이지 설명은 다음과 같다. JOSM is an extensible editor for ​OpenStreetMap (OSM) for ​Java 8+.It supports loading GPX tracks, background imagery, and OSM data from local sources as well as from online sources and allows to edit the OSM data (nodes, ways, and relations) and their metadata tags. 출처: josm.openstreetmap.de OSM 에디터 중에서 기능이 많고, 가장 좋은 거 같다. 아래는 오..

Q. GeoJSON이란? GeoJSON을 이루는 객체 종류는?

A. GeoJSON은 다양한 지리 데이터 구조를 인코딩하기 위한 형식이다. geojson.org 에 나온 영어 원문 정의는 아래와 같다. GeoJSON is a format for encoding a variety of geographic data structures. 출처: geojson.org 원문 설명을 보자. GeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, and MultiPolygon. Geometric objects with additional properties are Feature objects. Sets of features are contained b..

PostgreSQL에 PostGIS 플러그인 설치해서 DBeaver로 간단히 실습해보기

설치 도커를 이용한 설치 postgis 플러그인까지 설치된 postgis 도커 이미지가 존재하므로 바로 사용해서 도커에서 실행할 수 있다. 물론 postgres 도커 이미지를 실행한 뒤 postgis 플러그인을 따로 설치할 수도 있다. 아래 예와 같은 도커 명령어로 도커 이미지 설치 및 실행할 수 있다. POSTGRES_PASSWORD=password로 비밀번호는 password가 된다. docker run --name postgis-container -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgis/postgis DBeaver로 접속해보면 아래처럼 잘 접속이 된다. 아래 예처럼 postgis에 접속하면 테이블이 이미 존재한다. spatial_ref_sys ..