문제

Open Layers를 사용하여 기본 지도 위에 오버레이할 히트 지도 스타일 타일을 만들고 싶습니다.기본적으로 일부 경계 상자를 격자로 나누고 해당 격자 사각형 내에 샘플의 포인트 수에 따라 다른 색상을 사용하여 격자의 각 사각형을 표시하고 싶습니다.

관련된 기술은 C#, OpenLayers, SQL Server 2008 및 GeoServer입니다.

내 질문은 기본적으로 일반적인 접근 방식 중 하나입니다. 이 질문에 끌 끝을 어디에 두어야할지 잘 모르겠습니다.

나의 궁극적인 목표는 임의의 경계 상자를 선택하고 해당 경계 상자 내에 맞는 x 마일 x x 마일 그리드를 계산하고 개별 점 모음을 반복하여 하나의 그리드 사각형 또는 다른 그리드 사각형에 할당하는 것입니다. 그리드 정사각형당 포인트 밀도를 계산한 다음 밀도에 따라 그리드에 색상을 지정한 다음 Open Layers를 사용하여 CloudMade 기본 지도에 이를 오버레이할 수 있습니다.

어떤 도움이라도 전체적으로 또는 그 일부에 대해 크게 감사하겠습니다.

도움이 되었습니까?

해결책

경계 상자가 축 정렬되어 있으면 이는 매우 간단합니다.이미지를 만들고 이를 위한 월드 파일을 직접 만드세요.월드 파일은 단지 6줄의 텍스트이며 필요한 모든 것을 이미 알고 있습니다(x 및 y 픽셀 크기, 왼쪽 위 모서리의 좌표).

상자 모서리가 아닌 왼쪽 상단 모서리 픽셀의 중심을 사용하는지 확인하세요.

------ 월드 파일을 만드는 방법은 다음과 같습니다 -------

경계 상자의 왼쪽 위 모서리가 203732x598374이고 너비가 동쪽<->서쪽 200m, 높이가 북쪽<->남쪽 300m인 직사각형이 있는 이미지를 원한다고 가정해 보겠습니다.

적절한 픽셀 수의 이미지를 만든 다음 다음 6줄이 포함된 월드 파일을 만듭니다.

200
0
0
-300
203632
598524

이는 다음에 해당합니다.

200 == size of one pixel in X
0 == shear1
0 == shear2
-300 == size of one pixel in Y (from top down)
203632 == left edge - 1/2 pixel size (to center on pixel instead of edge of box)
598524 == top edge - 1/2 pixel size (to center on pixel instead of edge of box)

.png 이미지를 사용하는 경우 동일한 이름으로 .pgw로 저장하는 것이 좋습니다..jpg를 사용하는 경우 .jgw 등이 됩니다.

자세한 내용은 다음을 참조하세요.월드 파일 위키

다른 팁

"일부 경계 상자를 그리드로 나누고 그리드 정사각형의 샘플 수에 따라 다른 색상을 사용하여 그리드의 각 사각형을 표시합니다." 이것은 래스터 그리고 있습니다 특징 컬러 음영, 범례 등으로 이들을 표시하기위한 Geoserver에서. C#에서 이미지 타일을 만드는 것보다 이러한 기능을 사용하는 것이 더 유연하다고 생각합니다.

지오 서버 문서에서 :

래스터 데이터는 단순히 그림 일뿐 만 아니라 그래픽이 시각 정보의 그리드 (빨간색, 녹색 및 블루스의 조합) 인 것처럼 지리게 된 정보의 그리드로 생각할 수 있습니다. 시각적 데이터 만 포함하는 그래픽과 달리 래스터 그리드의 각 포인트/픽셀은 다양한 속성을 가질 수 있으며, 그중에는 본질적으로 시각적 구성 요소가 없을 수 있습니다.

이것을 다른 GIS 패키지에서 주제별 매핑 또는 윤곽 도표 또는 히트 맵 또는 2.5D 플롯이라고도합니다.

무료 GI를 사용할 수 있습니다 잔디 에게 만들다 래스터 그리드이지만 설명을 통해 보간 할 필요는 없습니다 (모든 셀에는 적어도 하나의 지점이 포함되어 있기 때문에) 자신의 코드를 롤아웃하기가 쉽습니다.

편집 : 오픈 소스 라이브러리가 있습니다 gdal 래스터 파일을 작성하는 데 사용할 수 있습니다 다양한 형식. C# 바인딩이 있습니다.

왼쪽 상단 픽셀의 중심을 계산하기위한 공식이 잘못되었다고 생각합니다. 이 예에서, 왼쪽 상단 픽셀의 중심은 아래로 내리고 (203732,598374)의 오른쪽에있다. 그렇다면 다음과 같아야합니까?

203832 == left edge + 1/2 pixel size (to center on pixel instead of edge of box)
598224 == top edge - 1/2 pixel size (to center on pixel instead of edge of box)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top