기술블로그

[HERE] WKT가 무엇인지? WKT 검증방법

keepGGoing 2024. 5. 13. 23:54

WKT  = Well-Known Text Geometry

WKT는 지도, 공간 객체의 공간 참조 시스템(Spatial Reference System) 그리고 공간 참조 시스템 간의 변환을 표현하기 위한 마크업 언어로 간단하게 공간을 표현하는 대표 언어이다.

 

WKT는 point, polygon, multipolygon 등이 있다. (4개의 변수로 18개의 다른 geomtery 타입을 나타낼 수 있다)

 

왜 우리가 WKT를 사용하는가?

1. Standard  : 표준화되어 있어 상호 운영성이 편하다.

2. Readability : WKT의 문법은 상대적으로 이해하고 읽기 쉽다

3. Restful API를 호출할 때, WKT 문자열이 다른 형식보다 더 효율적이다.  WKT는 많은 예제들에서 가독성과 효율성 측면에서 다양한 이점을 갖고 있다.

    + WKB(Well-known Binary)는 복잡하고 큰 geomtery에서 size에 대한 장점이 있지만 읽기 어렵고 해석하기 어렵다.

4. SQL과 DB에서 사용하기 편하다 : 많은 공간 DB가 WKT를 지원하고 있다.

5. 웹 표준과의 호환성: WKT는 POST 요청 본문에 쉽게 통합될 수 있다. 더 간단한 구조의 경우 GET 요청 URL에 추가될 수 있다.

 

WKT를 만드는 방법?

기술 블로그에서 추천하는 사이트 3개, 하기 사이트에서 WKT를 만든 후 WKT 가 적절한 포맷을 갖고 있는지 확인하는 예제도 따라 해봅시다

 

pip install shapely

 

from shapely.wkt import loads

def is_valid_wkt(wkt_data):
    try:
        shape = loads(wkt_data)
        return True
    except Exception as e:
        print(f"Invalid WKT: {e}")
        return False

#테스트 데이터
wkt_data = "MULTIPOLYGON(((-108.72070312499997 34.99400375757577,-100.01953124999997 46.58906908309183,-90.79101562499996 34.92197103616377,-108.72070312499997 34.99400375757577),(-100.10742187499997 41.47566020027821,-102.91992187499996 37.61423141542416,-96.85546874999996 37.54457732085582,-100.10742187499997 41.47566020027821)),((-85.16601562499999 34.84987503195417,-80.771484375 28.497660832963476,-76.904296875 34.92197103616377,-85.16601562499999 34.84987503195417)))"
#wkt_data = 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
print(is_valid_wkt(wkt_data))

 

추가로 loads함수는 

wkt 데이터 형식의 데이터를 shapely라이브러리의 지오메트리 객체로 리턴하는 함수이다

 

 


Here 기술 블로그를 보고 공부하고자 작성하였습니다.

https://www.here.com/learn/blog/wkt-well-known-text-format-with-hereapis