복잡한 다각형이 Google지도에 올바르게 표시되도록 수정하려면 어떻게해야하나요?


15

문제점 : 깨진 다각형 모양을 고치는 방법을 찾으려고하는데 어떻게 할 수 있는지 잘 모르겠습니다.


세부 사항 :

TIGERLINES에서 기본적으로 가져온 다각형이 많이 있습니다.

셰이프 파일로 변환 한 다음 Sql Server 2008로 가져 왔습니다.

SQL Server 2008에서는 멋지게 보입니다. 로스 앤젤레스의 도시는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

그러나 내 폴리에는 점이 많기 때문에 REDUCE맵 뷰 레벨이 확대되지 않으면 포인트 가 줄어 듭니다 . 따라서 제 경우에는 로스 앤젤레스 축소 를 렌더링하려고합니다 .

여기에 이미지 설명을 입력하십시오

대박!

이것은 잘 알려진 텍스트 형식의 폴리입니다 ..

MULTIPOLYGON (((-118.37033296865027 33.981437119998084, -118.37005887887605 33.981578692036159, -118.37034101004039 33.981636093563019, -118.37033296865027 33.981437119998084)), ((-118.66815694082851 34.181234948814819, -118.62915309690062 34.14689902389253, -118.56475201393673 34.130168028388276, -118.5992039806748 34.074336925351339, -118.57039497030522 34.069345957209549, -118.56968692628638 33.988811006799452, -118.55134001501617 33.982488918901176, -118.49446792996977 34.050559988837591, -118.44342601159182 34.016625025023124, -118.53748592914029 33.96667393391462, -118.49898897162241 33.916299091437473, -118.43732802504242 33.91651401198633, -118.4580839734636 33.961275936767734, -118.42944687485486 33.916317947202252, -118.4287748805515 33.93096998019935, -118.36821587274666 33.92901995236047, -118.37033296865027 33.981437119998084, -118.38014006025271 33.976370879899918, -118.40620312831412 33.9894040312244, -118.40276798429554 34.003464906235209, -118.44721596021705 33.990835906868767, -118.36957705476188 34.035079980519519, -118.37898513570399 34.01930701338695, -118.35780514530173 33.997145063915781, -118.33148511073327 34.001491938133285, -118.37005887887605 33.981578692036159, -118.3177468750705 33.970922985911365, -118.31338700532739 33.93821409504941, -118.29159591706274 33.959494911587832, -118.29062400107088 33.866332991682327, -118.30914811626086 33.865608026065182, -118.30099998201904 33.757721074150069, -118.33305692619008 33.721861951611757, -118.29415704014427 33.704554033590789, -118.23180307928671 33.71500194765504, -118.24896594980441 33.755902076278147, -118.22066886552763 33.782536959833138, -118.22662214917852 33.829531051866013, -118.23026099256474 33.792772095531092, -118.2565120484562 33.804774040894074, -118.2991459834285 33.797795976339046, -118.29920702986115 33.846318895031622, -118.28155507034047 33.86280202135606, -118.28208595952513 33.923201066885447, -118.23032405030229 33.929000895691168, -118.23399502457268 33.953263926662473, -118.25364008888438 33.943276983800338, -118.25643608790811 33.989497954281944, -118.23791790420275 33.989393059909709, -118.23970793049459 34.014713121327667, -118.19142810960136 34.012760956499392, -118.19262502907846 34.061762066095284, -118.1648349431549 34.062282928139695, -118.15528996126079 34.098672108789643, -118.17799390878898 34.098595067874996, -118.16558689825808 34.125466989766352, -118.18258002511257 34.129185991443848, -118.18392009154192 34.148673011439996, -118.22623088187513 34.149788973944844, -118.25425797615566 34.11876096748162, -118.28169102368197 34.156473098182232, -118.30964606995528 34.1612589323332, -118.34566505636386 34.142366926730304, -118.37031291768209 34.196379107293332, -118.33992999453659 34.206502959021506, -118.33746198396433 34.221312054601036, -118.26687107795063 34.221846086487439, -118.26667204057179 34.250779088440183, -118.2387889442851 34.281588919772553, -118.28669401126965 34.278336948162604, -118.29939493959903 34.293259048809304, -118.35470798399948 34.278848025464875, -118.3857618914668 34.284817020858974, -118.38739588298223 34.298779939448842, -118.4061680961638 34.2859269071303, -118.40520195114632 34.329811005464386, -118.50380990538876 34.337305995327178, -118.54629607559784 34.317332026288142, -118.5408208870528 34.2988139356695, -118.58853302357504 34.303219086876425, -118.59620799129411 34.274520945225589, -118.63346111715893 34.269525030054467, -118.63072510622223 34.2377719451453, -118.65873494162602 34.224578011901244, -118.66815694082851 34.181234948814819), (-118.46636404681055 34.0590670662609, -118.45468090186466 34.066799004274742, -118.44817495570614 34.049578023438457, -118.46636404681055 34.0590670662609), (-118.42624590643248 34.083052060665487, -118.39585612350398 34.112414074702421, -118.39584401878872 34.091055026539784, -118.34338194827956 34.09432806847537, -118.37695090866218 34.088630040183155, -118.3702939050842 34.0801689603087, -118.39070402303155 34.072083071358719, -118.37224405760227 34.062199935390908, -118.40602306576152 34.052665897923667, -118.42624590643248 34.083052060665487), (-118.45592304445982 34.284612059955819, -118.43256891423674 34.304687007226292, -118.41566704665274 34.2939320092269, -118.4437338970905 34.273310001969548, -118.45592304445982 34.284612059955819), (-118.3623419482557 34.1386959352159, -118.34569798267972 34.14235601789391, -118.34877496666293 34.131385983468121, -118.3623419482557 34.1386959352159), (-118.46233312716733 33.979751022958048, -118.43225893050703 33.9750159246595, -118.4513010127346 33.964230958845896, -118.46233312716733 33.979751022958048)))

이제 Google지도에 폴리를 표시하려면 Sql Server에서 데이터를 추출하여 Google Maps 형식으로 변환 한 다음 표시해야합니다. 폴리의 95 %에 효과적입니다. 다른 5 %는 .. 매우 엉망으로 보인다.

Not-Ok Los Angeles :-

여기에 이미지 설명을 입력하십시오

그래서 당신이 제안 할 것이라고 추측합니다-> 코드에 버그가 있는지 확인 하시겠습니까? 코드를 볼 수 있습니까? 코드와 관련이 있습니다!

자, 여기 Codeplex에 넣은 샘플 코드 라이브러리가 있습니다. 모양의 이진 데이터를 사용한 단위 테스트가 포함됩니다. ( SELECT MediumReducedBoundary.STAsBinary() FROM Table WHERE Id=1)

그런 Parse다음 byte[].. Google지도에 표시합니다.

내 변환 코드는 하나가 아닌 두 개의 다각형을 반환합니다.

이것이 내 Json의 모습입니다 . 이제 두 개의 다각형이 어떻게 표시되는지 확인하십시오.

클라이언트 측 자바 스크립트 코드는 여기에서 발견된다 . 이것은 내 json을 해독하고 이것을 구글 맵에 수동으로 렌더링하려고하는 곳입니다.

내 json 결과를 읽고이 데이터가 나쁜지 알려주는 방법 / 프로그램이있을 것으로 기대합니다 (잘못된 변환). 또는 누군가 WKT를 Google 형식의 JSON으로 잘못 변환 한 곳을 볼 수 있습니까?


FWIW, 다중 다각형은 유효 / 간단하므로 문제가 없어야합니다. 두 번째로, 두 가지 대상이 있습니다. 첫 번째 다각형은의 작은 삼각형 POINT (-118.37024428585559 33.981550635199085)으로 흥미롭지 만 문제의 원인이 아니라고 생각합니다.
Mike T

그렇다면 Sql Server 2008이 어떻게이 폴리를 '감소 시켰는가'오류가 될 수 있습니까?
Pure.Krome

아니, 다중 다각형의 모양 좋은, 나는 문제가 클라이언트 / 자바 스크립트로 생각 ..하지만의 내가이 길을 잃지했다, 그래서
마이크 T를

다른 GIS 응용 프로그램에서 WKT를 표시하여 잘 렌더링되는지 확인할 수 있습니까?
Pure.Krome

예, WKT는 JTS TestBuilder에서 이후의 두 번째 이미지와 동일하게 렌더링되며 REDUCE유효 / 간단한 테스트를 통과합니다. 그러나 json의 유효성을 검사하는 방법을 알 수 없습니다.
Mike T

답변:


4

폴리곤은 제로 와인딩 채우기 규칙을 사용하는 Canvas를 사용하여 Google Maps API에서 렌더링됩니다. 구멍을 표시하려면 외부 경로에 반대 방향으로 감기를 사용하여 구멍을 정의해야합니다.


안녕 브로드! 여기에 뛰어 들고 답장을 보내 주셔서 감사합니다! 정말 고맙습니다 :) 당신이 하나 또는 두 개의 링크를 제공 할 수있는 기회가 있습니까? 그런 다음 감사합니다 :) 건배 친구! 맥주 석판을 사무실로 보내드립니다.
Pure.Krome

물론-여기 좋은 도넛이 있습니다 : geocodezip.com/v3_polygon_example_donut.html
broady December

링크를 응원합니다 :)하지만 마우스 오른쪽 버튼으로 클릭하여 수행 방법을 볼 수 없습니다 :(
Pure.Krome

보기 소스를 누르십시오!
넓은

3

나에게 그것은 Google지도 버전이 원래 소스와 같은 방식으로 구멍을 이해하지 못하는 것처럼 보입니다. Google지도에서 구멍을 정의하는 방법을 찾아야합니다.

다음 구멍으로 가기 전에 각 구멍 다각형을 닫아야하는 점이 누락되었을 수 있습니다. Google Maps에서 이것을 어떻게 정의하는지 모르겠습니다. 추측에 불과합니다 ...


흠 .. 이것은 꽤 정확한 소리. 흠 .. Google지도 자바 스크립트 전문가를 찾아야하나요? 이 근처에있는 사람이 있습니까?
Pure.Krome

@ Pure.Krome : 필자는 자바 스크립트 전문가 일 필요는 없지만 Google지도 데이터 모델을 알고있는 사람 이라고 생각 합니다.
awe

아 .. 좋은 지적. 그것은 찾기가 더 어려워 질 수 있습니다 ... : ~ (
Pure.Krome

구멍이있는 다각형을 정의하는 방법을 설명하는 json API 참조를 찾아야합니다. 구멍을 지원하기 위해 다중 다각형이라고 할 수 있습니다.
awe

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.