2010-06-05 5 views
1

GeoDjango tutorial은 공간 데이터베이스에 세계 경계를 삽입하는 방법을 설명합니다.GeoDjango로 HTML 세계지도를 만드는 방법은 무엇입니까?

이 데이터를 사용하여 maparea 태그가있는 HTML로 세계지도를 만들고 싶습니다. Something like that.

각 나라의 좌표를 검색하는 방법을 모르겠습니다 (areacoords 속성에 필요).

from world.models import WorldBorders 

for country in WorldBorders.objects.all(): 
    print u'<area shape="poly" title="%s" alt="%s" coords="%s" />' % (v.name, v.name, "???") 

고마워요!

답변

0

세계 경계 예제에서 mpoly 속성은 지리적 폴리곤이 실제로 저장되는 곳입니다. 당신의 예에서

, 당신은 당신이 mpoly이 자체가 MultiPolygon field 때문에 직접 그러나 그것을 사용할 수 있도록 않을거야 v.mpoly

액세스 할 것입니다. 많은 섬이있는 캐나다와 같은 나라를 생각해보십시오. 각 섬과 주요 대륙은 다각형입니다. 따라서 귀하의 요점과 캐나다 국경에 대한 완전한 설명에 도달하려면 다음을 수행해야합니다.

  1. 다중 다각형 내부의 다각형을 반복합니다. 각 다각형은 한 영역에 해당합니다 (국가마다 한 영역의 예에서 잘못된 가정).
  2. polygon의 내부를 반복합니다.
  3. point 좌표 (위도/경도)를 svg 그래픽에서 사용하는 좌표로 변환하십시오.
+0

나는 당신의 논리를 이해했습니다, 감사합니다! "위도/경도를 SVG 그래픽의 좌표로 변환"이라고 말하면 간단한 추가 만하면됩니까? – user176455

0

SVG에서 위도/경도를 사용하려면 픽셀 (x/y) 공간으로 투영해야합니다. 간단한 변환은 다음과 같습니다

>>> x = (lon + 180)/360 * image_width 
>>> y = (90 - lat)/180 * image_height 

image_width == 2 * image_height, 이것은 당신에게 (AN equirectangular projection 모양)에 게시 된 링크에서지도 같은 것을 줄 것이다 이미지의 경우.

다른 투영법 (예 : Mercator)을 사용하려면 변형을 적용하기 전에 GeoDjango에서 GEOSGeometry.transform 메서드를 사용하십시오.

관련 문제