QGIS를 사용하여 x km 내에 다른 점이 없는 shapefile의 점 식별

QGIS를 사용하여 x km 내에 다른 점이 없는 shapefile의 점 식별


이것은 아마도 순진한 질문이지만 QGIS의 새로운 사용자로서 어려움을 겪고 있습니다.

나는 매우 큰 shapefile을 가지고 있습니다(275,000 포인트, 그러나 더 빠른 처리를 위해 필요한 경우 이를 약 10개의 하위 영역으로 나눌 수 있습니다).

200미터 이내에 다른 점이 없는 모든 점을 식별한 다음 파일 필드에 "고유" 값을 사용하여 각 점을 코딩하고 싶습니다.

로컬 클러스터의 일부인 다른 모든 포인트에 대해 "클러스터"로 코딩하고 싶습니다.

이를 달성한 후 무작위로 각 클러스터에 대해 하나만 선택하여 데이터 세트에 유지하고 나머지는 버리고 싶습니다.

현재 저는 1단계를 달성하지 못하고 있으므로 어떤 도움이라도 환영합니다.


다음을 사용하여 자체 조인을 시도할 수도 있습니다. NNJoin QGIS 플러그인.

입력 레이어의 각 피처에 대해 가장 가까운 피처(자체 조인의 경우 자체 제외)를 찾고 생성된 데이터 세트에서 가장 가까운 피처의 모든 속성과 거리를 포함합니다. 데이터 세트에 시간이 걸릴 것입니다(약 175000개의 기능이 있는 포인트 데이터 세트로 시도했는데 몇 분 정도 걸립니다...).


Vector > Analysis Tools > Distance Matrix와 조인을 사용하여 원하는 것을 달성할 수 있습니다.

예시를 위해 qgis 샘플 데이터 공항의 레이어를 사용하겠습니다. 이것은 작은 데이터 세트이므로 275000 포인트 shapefile과 함께 어떻게 될지 잘 모르겠습니다.

1. 레이어를 대상과 대상으로 사용하여 거리 행렬을 만듭니다.

"가장 가까운 (k) 대상 포인트만 사용"을 선택하고 1로 설정하는 것을 잊지 마십시오.

2. 구분된 텍스트 레이어를 추가하여 CSV 열기

"쉼표"를 구분 기호로 선택하고 지오메트리 정의를 지오메트리 없음으로 설정합니다.

3. 새로 생성된 테이블로 원본 레이어에 조인 생성

4. 필드 계산기를 사용하여 원하는 값으로 필드 채우기

조인으로 인해 이제 공항 속성 테이블 내에서 거리 테이블 값에 액세스할 수 있으므로 거리 매트릭스 값에 따라 새 필드를 만들고 "클러스터된" 및 "고유한" 값으로 채우는 것이 매우 쉽습니다. . 내 예제 데이터 때문에 1200000(1200km) 값을 사용했으므로 케이스(200)에 맞게 조정해야 합니다.

결국 레이어에는 가장 가까운 지점까지의 최소 거리에 따라 값이 다른 point_type이라는 새 필드가 있어야 합니다.


속성이 있는 tmap shapefile에 플롯하려고 합니다.

저는 노르웨이의 지방 자치 단체 데이터로 작업하려고 노력 중이며 QGIS, shapefile 및 이것을 R로 플로팅하는 데 완전히 익숙하지 않습니다. 여기에서 지방 자치 단체를 다운로드합니다. Administrative enheter kommuner / Administrative units 지방 자치 단체

재현 가능한 파일은 다음과 같습니다. Joanna의 github

QGIS를 다운로드했으므로 GEOJson 파일을 열고 shapefile로 변환할 수 있습니다. 나는 이것을 할 수 있고 데이터를 R로 읽을 수 있습니다.

나는 다른 지방 자치 단체에 따라 내가 부르는 다른 가치/순위를 가지고 있습니다. 팩터, 그리고 이 분류를 내가 호출하는 데이터 프레임에 저장했습니다. df_new. 이 "분류"를 위의 "테스트" 개체에 병합하고 분류 속성이 있는 지도를 지도에 플로팅하고 싶습니다.

이것은 작동하지만 tmap 으로 이것을 플롯할 때

그것은 이것을 던진다 오류:

당신은 내가 세 개의 플롯을 얻는 것을 볼 수 있습니다. 이것은 위의 내 오류와 관련이 있습니까?


이것은 yosukesabai의 답변을 각색한 것입니다.

내가 찾고 있던 포인트가 shapefile과 동일한 투영 시스템에 있는지 확인하고 싶었기 때문에 이에 대한 코드를 추가했습니다.

나는 그가 ply = feat_in.GetGeometryRef()에 대한 포함 테스트를 수행하는 이유를 이해할 수 없었습니다(내 테스트에서는 그것 없이도 잘 작동하는 것 같았습니다). 그래서 나는 그것을 제거했습니다.

나는 또한 무슨 일이 일어나고 있는지 더 잘 설명하기 위해 주석을 개선했습니다.

이 사이트, 이 사이트, 이 사이트가 투영 확인에 도움이 되었습니다. EPSG:4326

또 다른 옵션은 Shapely(PostGIS용 엔진인 GEOS 기반 Python 라이브러리)와 Fiona(기본적으로 파일 읽기/쓰기용)를 사용하는 것입니다.

폴리곤이 크거나 복잡한 경우 point-in-polygon 테스트를 수행하는 것은 비용이 많이 들 수 있습니다(예: 해안선이 매우 불규칙한 일부 국가의 shapefile). 경우에 따라 더 집중적인 테스트를 수행하기 전에 경계 상자를 사용하여 빠르게 배제하는 것이 도움이 될 수 있습니다.

마지막으로, 크고 불규칙한 모양 파일을 로드하고 구문 분석하는 데 시간이 걸린다는 점을 명심하십시오(불행히도 이러한 유형의 다각형은 메모리에 유지하는 데 비용이 많이 드는 경우가 많습니다).

다음은 pyshp 및 shapely를 기반으로 하는 간단한 솔루션입니다.

shapefile에 하나의 폴리곤만 포함되어 있다고 가정해 보겠습니다(그러나 여러 폴리곤에 쉽게 적응할 수 있음).

나는 파이썬 바인딩과 함께 gdal의 ogr을 사용하여 어제 당신이하고있는 일을 거의 정확하게 수행했습니다. 이렇게 생겼습니다.


Shapefile 좌표계의 기초

shapefile에는 기능을 정의하는 데 사용된 좌표계를 식별하는 정보가 없는 경우가 많습니다. 이 경우 모양 열의 공간 참조 속성은 알 수 없음 또는 지리적으로 가정됩니다. 피처의 경계 좌표가 x 방향으로 -180 ~ 180, y 방향으로 -90 ~ 90 범위 내에 있는 경우 ArcGIS는 데이터를 지리 데이터로 가정하고 데이터를 NAD27로 가정합니다. 경계 좌표가 이 범위 내에 있지 않으면 소프트웨어는 공간 참조를 알 수 없는 것으로 처리합니다.

좌표계가 정의되지 않은 경우에도 shapefile로 작업할 수 있지만 사용 가능한 모든 기능을 활용하지 못할 수도 있습니다. 예를 들어 shapefile은 다른 데이터와 일치하지 않을 수 있으며 자동으로 생성된 메타데이터는 불완전합니다.

ArcCatalog에서 여러 가지 방법으로 shapefile의 좌표계를 정의할 수 있습니다.

  • ArcCatalog와 함께 제공되는 미리 정의된 좌표계 ​​중 하나를 선택합니다.
  • 다른 데이터 소스에서 사용하는 좌표계 매개변수를 가져옵니다.
  • 새로운 사용자 정의 좌표계를 정의합니다.

좌표계 매개변수는 shapefile과 동일한 폴더의 .prj 파일에 저장되어야 하며 .prj 파일은 shapefile과 동일한 파일 접두사를 가져야 합니다. 예를 들어, wells.shp라는 shapefile로 작업하는 경우 좌표계 매개변수는 wells.prj라는 파일의 동일한 폴더에 저장되어야 합니다.

좌표계가 정의되면 개별 매개변수를 수정할 수 있습니다. 예를 들어, 다른 데이터 소스에서 가져온 좌표계의 매개변수 하나를 수정하거나 사전 정의된 좌표계 ​​중 하나를 사용자 정의할 수 있습니다. 사용자 정의 좌표계를 생성한 후 이 좌표계를 조직의 다른 사람과 공유할 수 있는 별도의 좌표계 파일로 저장할 수 있습니다.

ArcCatalog에서 shapefile의 좌표계를 추가하거나 수정하려면 프로젝트 도구 또는 공간 참조 생성 도구를 사용하십시오.


고급 디지털화¶

목적 목적
고급 디지타이징 도구 활성화 추적 활성화
실행 취소 다시 하다
피쳐 회전 기능 단순화
링 추가 부품 추가
채우기 링
링 삭제 부품 삭제
오프셋 곡선 모양 변경 기능
분할 부품 분할 기능
선택한 피처의 속성 병합 선택한 기능 병합
점 기호 회전 오프셋 포인트 기호

표 고급 편집: 벡터 레이어 고급 편집 도구 모음

실행 취소 및 다시 실행¶

그만큼 실행 취소 및 다시 실행 도구를 사용하면 벡터 편집 작업을 실행 취소하거나 다시 실행할 수 있습니다. 실행 취소/다시 실행 기록의 모든 작업을 표시하는 도킹 가능한 위젯도 있습니다(Figure_edit_undo 참조). 이 위젯은 기본적으로 표시되지 않으며 도구 모음을 마우스 오른쪽 버튼으로 클릭하고 활성화하여 표시할 수 있습니다. 실행 취소/다시 실행 패널 체크박스. 그러나 실행 취소/다시 실행 기능은 위젯이 표시되지 않는 경우에도 활성화됩니다.

디지털화 단계 다시 실행 및 실행 취소

실행 취소를 쳤을 때 또는 Ctrl+Z (또는 명령+Z )를 누르면 모든 기능과 속성의 상태가 되돌리기 작업이 발생하기 전의 상태로 돌아갑니다. 일반적인 벡터 편집 작업 이외의 변경 사항(예: 플러그인에 의해 수행된 변경 사항)은 변경 사항이 수행된 방법에 따라 되돌릴 수도 있고 그렇지 않을 수도 있습니다.

실행 취소/다시 실행 기록 위젯을 사용하려면 기록 목록에서 작업을 클릭하여 선택하기만 하면 됩니다. 모든 기능은 선택한 작업 후의 상태로 되돌아갑니다.

피처 회전¶

/> 기능 회전을 사용하여 맵 캔버스에서 하나 이상의 기능을 회전합니다. /> 피처 회전 아이콘을 누른 다음 회전할 피처를 클릭합니다. 지도를 클릭하여 회전된 피처를 배치하거나 사용자 입력 위젯에 각도를 입력합니다. 여러 기능을 회전하려면 먼저 선택해야 합니다.

지형지물을 선택한 상태에서 지도 도구를 활성화하면 해당 중심이 나타나고 회전 기준점이 됩니다. 기준점을 이동하려면 Ctrl 버튼을 누르고 지도를 클릭하여 배치합니다.

잡고 있으면 시프트 지도를 클릭하기 전에 회전은 45도 단위로 수행되며 나중에 사용자 입력 위젯에서 수정할 수 있습니다.

피처 회전을 중단하려면 피처 회전 아이콘을 클릭해야 합니다.

기능 단순화¶

형상 단순화 도구를 사용하면 형상이 유효한 한 형상의 정점 수를 줄일 수 있습니다. 이 도구를 사용하면 한 번에 많은 기능을 단순화하거나 여러 부분으로 구성된 기능을 단순화할 수도 있습니다.

먼저 피처를 클릭하거나 피처 위로 직사각형을 끕니다. 공차를 정의할 수 있는 대화 상자 지도 단위 , 레이어 단위 또는 픽셀 팝업이 나타나고 주어진 허용 오차를 사용하여 피처의 컬러 및 단순화된 사본이 그 위에 나타납니다. QGIS는 지오메트리를 유지하면서 삭제할 수 있는 꼭짓점의 양을 계산합니다. 허용 오차가 높을수록 더 많은 정점을 삭제할 수 있습니다. 예상되는 지오메트리가 필요에 맞으면 클릭하기만 하면 됩니다. [좋아요] 단추. 프로젝트를 종료하거나 편집 세션을 종료할 때 사용한 허용 오차가 저장됩니다. 따라서 다음 번에 피쳐를 단순화할 때 동일한 공차로 돌아갈 수 있습니다.

기능 단순화를 중단하려면 기능 단순화 아이콘을 클릭해야 합니다.

의 기능 단순화 옵션과 달리 설정 ‣ 옵션 ‣ 렌더링 렌더링을 위해 지오메트리를 단순화하는 메뉴에서 피처 단순화 도구는 데이터 소스의 피처 지오메트리를 영구적으로 수정합니다.

파트 추가¶

다중점, 다중선 또는 다중 다각형 피처를 생성하는 선택한 피처에 부품을 추가할 수 있습니다. 새 부품은 미리 선택해야 하는 기존 부품 외부에서 디지털화되어야 합니다.

/> 부품 추가를 사용하여 지오메트리 없는 피쳐에 지오메트리를 추가할 수도 있습니다. 먼저 속성 테이블에서 피처를 선택하고 /> 부품 추가 도구를 사용하여 새 지오메트리를 디지타이즈합니다.

부분 삭제¶

파트 삭제 도구를 사용하면 다중 피처에서 파트를 삭제할 수 있습니다(예: 다중 폴리곤 피처에서 폴리곤 삭제). 이 도구는 포인트, 라인 및 폴리곤과 같은 모든 다중 부품 지오메트리와 함께 작동합니다. 또한 피쳐의 기하학적 구성 요소를 완전히 제거하는 데 사용할 수 있습니다. 부품을 삭제하려면 대상 부품 내부를 클릭하기만 하면 됩니다.

링 추가¶

도구 모음에서 링 추가 아이콘을 사용하여 링 다각형을 만들 수 있습니다. 즉, 기존 영역 내부에서 ‘구멍’로 발생할 추가 폴리곤을 디지털화할 수 있으므로 외부 폴리곤과 내부 폴리곤의 경계 사이 영역만 링 폴리곤으로 남게 됩니다.

채우기 링¶

당신은 사용할 수 있습니다 Fill Ring 기능은 폴리곤에 링을 추가함과 동시에 레이어에 새로운 기능을 추가하는 기능입니다. 이 도구를 사용하면 기존 폴리곤 내의 폴리곤을 디지털화하기만 하면 됩니다. 따라서 먼저 사용할 필요가 없습니다. 링 추가 아이콘을 클릭한 다음 더 이상 기능을 추가하십시오.

링 삭제¶

링 삭제 도구를 사용하면 구멍 내부를 클릭하여 기존 다각형 내의 링을 삭제할 수 있습니다. 이 도구는 폴리곤 및 다중 폴리곤 피처에서만 작동합니다. 폴리곤의 외부 링에 사용될 때 아무 것도 변경되지 않습니다.

기능 모양 변경¶

도구 모음의 형상 변경 도구를 사용하여 선 및 폴리곤 형상의 형상을 변경할 수 있습니다. 선의 경우 첫 번째 교차점에서 마지막 교차점까지의 선 부분을 원래 선으로 바꿉니다.

모양 변경 도구로 선스트링 지오메트리 확장

형상 변경 도구를 사용하여 기존 선스트링 형상을 확장합니다. 선의 첫 번째 또는 마지막 정점에 스냅하고 새 정점을 그립니다. 유효성을 검사하면 형상의 형상이 두 선의 조합이 됩니다.

폴리곤의 경우 폴리곤 경계의 모양을 변경합니다. 작동하려면 모양 변경 도구의 선이 다각형 경계를 두 번 이상 교차해야 합니다. 선을 그리려면 맵 캔버스를 클릭하여 정점을 추가합니다. 완료하려면 마우스 오른쪽 버튼을 클릭하기만 하면 됩니다. 선과 마찬가지로 첫 번째 교차점과 마지막 교차점 사이의 세그먼트만 고려됩니다. 폴리곤 내부에 있는 라인 및 세그먼트 모양 변경은 폴리곤 외부의 세그먼트가 확장되는 위치에서 자르는 결과를 가져옵니다.

폴리곤을 사용하면 모양을 변경하면 때때로 의도하지 않은 결과가 발생할 수 있습니다. 주요 정밀 검사가 아닌 폴리곤의 작은 부분을 교체하는 것이 주로 유용하며 모양 변경 라인이 여러 폴리곤 링을 교차하는 것은 허용되지 않습니다. 이렇게 하면 잘못된 폴리곤이 생성될 수 있기 때문입니다.

모양 변경 도구는 다각형 링 또는 닫힌 선의 시작 위치를 변경할 수 있습니다. 따라서 ‘twice’로 표시되는 점은 더 이상 동일하지 않습니다. 이것은 대부분의 응용 프로그램에서 문제가 되지 않을 수 있지만 고려해야 할 사항입니다.

오프셋 곡선¶

오프셋 곡선 도구는 선 레이어의 평행 이동을 만듭니다. 이 도구는 편집된 레이어(지오메트리가 수정됨) 또는 배경 레이어(이 경우 선/링의 복사본을 만들어 편집된 레이어에 추가)에 적용할 수 있습니다. 따라서 디스턴스 라인 레이어 생성에 이상적입니다. 그만큼 사용자 입력 변위 거리를 보여주는 대화 상자 팝업.

라인 레이어의 이동을 생성하려면 먼저 편집 모드로 이동하여 오프셋 곡선 도구. 그런 다음 기능을 클릭하여 이동합니다. 마우스를 움직여 원하는 위치를 클릭하거나 사용자 입력 위젯에 원하는 거리를 입력합니다. 변경 사항은 다음과 함께 저장될 수 있습니다. 레이어 편집 저장 도구.

QGIS 옵션 대화상자(디지타이징 탭을 클릭한 다음 곡선 오프셋 도구 섹션)을 사용하면 다음과 같은 일부 매개변수를 구성할 수 있습니다. 조인 스타일, 사분면 세그먼트, 마이터 한계.

분할 기능¶

도구 모음에서 피처 분할 아이콘을 사용하여 피처를 분할할 수 있습니다. 분할하려는 형상을 가로질러 선을 그리기만 하면 됩니다.

분할 부분¶

QGIS에서는 부품 수가 증가하도록 다중 부품 기능의 부품을 분할할 수 있습니다. 부분 분할 아이콘을 사용하여 분할하려는 부분을 가로질러 선을 그리면 됩니다.

원클릭으로 폴리라인 피처 분할

클릭 한 번으로 스냅된 정점 라인 피쳐의 기능 분할 또는 부품 분할 도구는 새 기능이나 부품으로 분할하기에 충분합니다.

선택한 기능 병합¶

선택한 피처 병합 도구를 사용하면 기존 피처를 병합하여 새 피처를 생성할 수 있습니다. 해당 지오메트리는 병합되어 새 피처를 생성합니다. 피쳐에 공통 경계가 없으면 다중 다각형/다중 폴리라인/다중점 피쳐가 생성됩니다.

먼저 여러 기능을 선택합니다. 그런 다음 선택한 기능 병합 버튼을 누릅니다. 새 대화 상자에서 대화 상자 상단에서 새 기능의 각 필드에 적용할 값을 선택할 수 있습니다. 해당 값은 다음과 같을 수 있습니다.

  • 초기 기능의 속성에서 선택,
  • 필드 유형에 따라 초기 특성 속성(Minimum, Maximum, Median, Sum, Count Concatenation. 참조)의 집계. 통계 요약 패널 전체 기능 목록),
  • 건너뜀, 즉 필드가 비어 있음을 의미합니다.
  • 또는 행 맨 아래에 수동으로 입력합니다.

선택한 기능의 속성 병합¶

선택한 피처의 속성 병합 도구를 사용하면 경계를 병합하지 않고 피처에 동일한 속성을 적용할 수 있습니다. 대화 상자는 다음과 같습니다. 선택한 기능 병합 그 도구와 달리 선택된 개체는 형상과 함께 유지되는 반면 일부 속성은 동일하게 만들어지는 것을 제외하고는 도구입니다.

점 기호 회전¶

포인트 심볼 회전을 사용하면 맵 캔버스에서 포인트 심볼의 회전을 변경할 수 있습니다. 먼저 기호에 적용해야 합니다. 데이터 정의 회전:에서 레이어 속성 ‣ 스타일 대화 상자에서 데이터 정의 재정의 위젯 회전 기호 레이어의 최고 수준(바람직하게는)의 옵션을 선택하고 필드 유형 콤보 박스. 따라서 이 필드의 값은 그에 따라 각 기능 기호를 회전하는 데 사용됩니다.

전역 옵션으로 심볼의 첫 번째 수준에서 회전 필드를 설정하면 모든 기본 수준에 적용되고 더 낮은 수준에서 설정하면 이 심볼 레이어만 회전합니다(단일 심볼 레이어가 없는 경우).

심볼의 회전을 변경하려면 회전 포인트 심볼이 있는 맵 캔버스의 포인트 피처를 클릭하고 왼쪽 버튼을 누른 상태에서 마우스를 이리저리 움직입니다. 회전 값이 있는 빨간색 화살표가 시각화됩니다(Figure_rotate_point 참조). 다시 왼쪽 마우스 버튼을 놓으면 이 새 회전으로 심볼이 정의되고 레이어 속성 테이블에서 회전 필드가 업데이트됩니다.

잡고 있으면 Ctrl 키를 누르면 15도씩 회전합니다.

오프셋 포인트 기호¶

그만큼 오프셋 포인트 심볼을 사용하면 맵 캔버스에서 포인트 심볼의 렌더링된 위치를 대화식으로 변경할 수 있습니다. 이 도구는 다음과 같이 작동합니다. 데이터 정의에 필드를 연결해야 한다는 점을 제외하고 점 기호 회전 도구 오프셋(X, Y) 맵 캔버스에서 심볼을 이동하는 동안 오프셋 좌표로 채워질 필드의 속성입니다.

그만큼 오프셋 포인트 기호 도구는 사용해야 하는 포인트 기능 자체를 이동하지 않습니다. 노드 도구 또는 이를 위해 Move Feature 도구를 사용하십시오.

모든 심볼 레이어에 동일한 필드를 할당해야 합니다.

심볼의 적어도 두 레이어에 데이터 정의 속성(예: 회전)에 할당된 서로 다른 필드가 있는 경우 해당 도구는 심볼 속성에 할당된 필드가 없는 것으로 간주하고 작업을 수행하지 않습니다.

자동 추적¶

일반적으로 캡처 맵 도구(피처 추가, 파트 추가, 링 추가, 모양 변경 및 분할)를 사용할 때 피처의 각 꼭짓점을 클릭해야 합니다.

자동 추적 모드를 사용하면 디지털화 프로세스의 속도를 높일 수 있습니다. 아이콘을 누르거나 키와 스냅 추적하려는 피쳐의 꼭짓점 또는 세그먼트. 스냅하려는 다른 정점 또는 세그먼트 위로 마우스를 이동하면 일반적인 직선 대신 디지타이징 고무 밴드가 스냅한 마지막 지점에서 현재 위치까지의 경로를 나타냅니다. QGIS는 실제로 기본 기능 토폴로지를 사용하여 두 점 사이의 최단 경로를 구축합니다. 클릭하면 QGIS가 경로를 따라 중간 정점을 배치합니다. 더 이상 디지털화하는 동안 모든 정점을 수동으로 배치할 필요가 없습니다.

추적하려면 경로를 구축하기 위해 추적 가능한 레이어에서 스냅을 활성화해야 합니다. 또한 디지털화하는 동안 기존 정점 또는 세그먼트에 스냅해야 하고 두 노드가 기존 기능에 따라 토폴로지적으로 연결 가능한지 확인해야 합니다. 그렇지 않으면 QGIS가 이들을 연결할 수 없으므로 단일 직선을 추적합니다.

최적의 추적을 위해 지도 축척 또는 스냅 설정 조정

지도 표시에 피처가 너무 많으면 구조 준비가 오래 걸리고 메모리 오버헤드가 커질 수 있으므로 추적이 비활성화됩니다. 일부 레이어를 확대하거나 비활성화한 후 추적이 다시 활성화됩니다.

를 눌러 자동 추적을 빠르게 활성화 또는 비활성화합니다. 열쇠

눌러서 키를 사용하면 하나의 기능을 디지털화하는 동안에도 언제든지 추적을 활성화/비활성화할 수 있으므로 추적이 활성화된 피쳐의 일부와 추적이 비활성화된 다른 부분을 디지털화할 수 있습니다. 추적이 비활성화되면 도구가 평소와 같이 작동합니다.


R - 주어진 반경 내에서 가장 가까운 이웃 점과 이웃 수 찾기, 위도-경도 좌표

내 데이터 세트 내에서 특정 포인트가 얼마나 고립되어 있는지 알아내려고 합니다. 나는 격리를 결정하기 위해 가장 가까운 이웃의 거리와 주어진 반경 내의 이웃 사이트의 수를 결정하기 위해 두 가지 방법을 사용하고 있습니다. 내 모든 좌표는 위도와 경도입니다.

내 데이터는 다음과 같습니다.

가장 가까운 이웃 연못의 이름을 열 이웃에, 위도와 경도를 n.lat 및 n.long에, 두 연못 사이의 거리를 n.distance, 면적, 캐노피 및 avg.depth를 입력하고 싶습니다. 각각의 적절한 열.

둘째, 대상 연못의 1500m 이내의 연못의 수를 반지름 1500에 넣고 싶습니다.

내가 원하는 거리/숫자를 계산하는 데 도움이 되는 기능이나 패키지를 아는 사람이 있습니까? 문제라면 다른 필요한 데이터를 입력하는 것은 어렵지 않겠지만 가장 가까운 이웃의 이름과 거리, 그리고 1500m 이내의 연못의 수는 정말 도움이 필요한 것입니다.


내용

shapefile은 기하학적 위치 및 관련 속성 정보를 저장하기 위한 디지털 벡터 저장 형식입니다. 이 형식은 토폴로지 정보를 저장할 수 있는 용량이 부족합니다. shapefile 형식은 1990년대 초 ArcView GIS 버전 2와 함께 도입되었습니다. 이제 다양한 무료 및 비자유 프로그램을 사용하여 shapefile을 읽고 쓸 수 있습니다.

Shapefile은 점, 선 및 다각형의 기본 기하학적 데이터 유형을 저장하기 때문에 간단합니다. 이러한 프리미티브는 그들이 나타내는 것을 지정하기 위한 속성 없이 제한적으로 사용됩니다. 따라서 레코드 테이블은 shapefile의 각 기본 모양에 대한 속성/속성을 저장합니다. 데이터 속성과 함께 모양(점/선/다각형)은 지리 데이터에 대해 무한히 많은 표현을 생성할 수 있습니다. 표현은 강력하고 정확한 계산을 위한 기능을 제공합니다.

"shapefile"이라는 용어는 매우 일반적이지만 "shapefile"은 실제로 여러 파일의 집합입니다. 세 개의 개별 파일은 일반적으로 shapefile을 구성하는 핵심 데이터를 저장하는 데 필수입니다. 성능 향상을 위해 주로 인덱스 데이터를 저장하는 추가 8개의 선택적 파일이 있습니다. 각 개별 파일은 MS DOS 8.3 파일 이름 지정 규칙(8자 파일 이름 접두사, fullstop, shapefil.shp와 같은 3자 파일 이름 접미사)을 따라야 shapefile을 처리하는 과거 응용 프로그램과 호환됩니다. 같은 이유로 모든 파일은 같은 폴더에 있어야 합니다.

  • .shp — 모양 형식은 피쳐 지오메트리 자체를 지정합니다.
  • .shx — 모양 인덱스 형식은 피처 지오메트리의 위치 인덱스를 지정하여 빠르게 앞뒤로 탐색할 수 있습니다.
  • .dbf — 속성 형식 dBase III 형식의 각 모양에 대한 열 속성
  • .prj — 투영 형식 좌표계 및 투영 정보, 잘 알려진 텍스트 형식을 사용하여 투영을 설명하는 일반 텍스트 파일
  • .sbn 및 .sbx — 기능의 공간 인덱스
  • .fbn 및 .fbx — 읽기 전용인 shapefile에 대한 기능의 공간 인덱스
  • .ain 및 .aih — 테이블 또는 테마의 속성 테이블에 있는 활성 필드의 속성 인덱스
  • .ixs — 읽기-쓰기 shapefile을 위한 지오코딩 인덱스
  • .mxs — 읽기-쓰기 shapefile을 위한 지오코딩 인덱스(ODB 형식)
  • .atx — 다음 형식의 .dbf 파일에 대한 속성 인덱스 셰이프 파일.열 이름 .atx(ArcGIS 8 이상)
  • .shp.xml — XML 형식의 메타데이터
  • .cpg —는 사용할 문자 인코딩을 식별하기 위한 코드 페이지(.dbf에만 해당)를 지정하는 데 사용됩니다.

.shp , .shx 및 .dbf 파일 각각에서 각 파일의 모양은 순서대로 서로 일치합니다. 즉, .shp 파일의 첫 번째 레코드는 .shx 및 .dbf 파일의 첫 번째 레코드에 해당하는 식입니다. .shp 및 .shx 파일에는 엔디안이 다른 다양한 필드가 있으므로 파일 형식을 구현하는 사람은 각 필드의 엔디안을 존중하고 적절하게 처리하도록 매우 주의해야 합니다.

셰이프 파일은 종종 각각 경도와 위도를 저장하지만 X 및 Y 측면에서 좌표를 처리합니다. X 및 Y 용어로 작업하는 동안 용어의 순서를 준수해야 합니다(경도는 X에 저장되고 위도는 Y에 저장됨).

셰이프 파일 모양 형식( .shp )

기본 파일( .shp )에는 shapefile의 기본 지리 참조 데이터가 포함되어 있습니다. 파일은 단일 고정 길이 헤더와 하나 이상의 가변 길이 레코드로 구성됩니다. 각각의 가변 길이 레코드는 레코드 헤더 구성요소와 레코드 내용 구성요소를 포함합니다. 파일 형식에 대한 자세한 설명은 Esri Shapefile 기술 설명. [1] 이 형식은 .shp 확장자를 공유하는 AutoCAD 모양 글꼴 소스 형식과 혼동되어서는 안 됩니다.

기본 파일 헤더는 길이가 100바이트로 고정되어 있으며 17개의 필드 9개의 4바이트(32비트 부호 있는 정수 또는 int32) 정수 필드와 8개의 8바이트(이중) 부호 있는 부동 소수점 필드를 포함합니다.

바이트 유형 엔디안 용법
0–3 int32 파일 코드(항상 16진수 값 0x0000270a)
4–23 int32 미사용 5 uint32
24–27 int32 파일 길이(헤더 포함 16비트 워드)
28–31 int32 작은 버전
32–35 int32 작은 모양 유형(아래 참조 참조)
36–67 더블 작은 shapefile에 포함된 모든 모양의 최소 경계 사각형(MBR)은 최소 X, 최소 Y, 최대 X, 최대 Y 순서로 4배가 됩니다.
68–83 더블 작은 Z의 범위는 최소 Z, 최대 Z 순서로 두 배가 됩니다.
84–99 더블 작은 M의 범위는 다음 순서로 두 배가 됩니다. 최소 M, 최대 M

그런 다음 파일에는 임의의 수의 가변 길이 레코드가 포함됩니다. 각 레코드에는 8바이트의 레코드 헤더가 접두사로 붙습니다.

바이트 유형 엔디안 용법
0–3 int32 레코드 번호
4–7 int32 레코드 길이(16비트 워드)

레코드 헤더 다음은 실제 레코드입니다.

바이트 유형 엔디안 용법
0–3 int32 작은 모양 유형(아래 참조 참조)
4– - - 모양 내용

가변 길이 레코드 내용은 모양 유형에 따라 다릅니다. 가능한 모양 유형은 다음과 같습니다.

선택 과목: M 범위, M 어레이

선택 과목: M 범위, M 어레이

선택 과목: M 범위, M 어레이

선택 과목: M 범위, M 어레이

선택 과목: M 범위, M 어레이

선택 필드: M 범위, M 어레이

선택 과목: M 범위, M 어레이

일반적으로 Point, Polyline 및 Polygon을 포함하는 shapefile은 매우 유명합니다. "Z" 유형은 3차원입니다. "M" 유형에는 참조되는 포인트와 일치하는 사용자 정의 측정이 포함됩니다. 3차원 shapefile은 다소 흔하지 않으며 측정 기능은 shapefile 데이터와 함께 사용되는 보다 강력한 데이터베이스로 대체되었습니다.

셰이프 파일 모양 인덱스 형식( .shx )

shapefile 인덱스에는 .shp 파일과 동일한 100바이트 헤더가 포함되어 있으며 그 뒤에 다음 두 필드로 구성된 8바이트 고정 길이 레코드가 있습니다.

바이트 유형 엔디안 용법
0–3 int32 레코드 오프셋(16비트 워드)
4–7 int32 레코드 길이(16비트 워드)

이 인덱스를 사용하면 모양 인덱스(고정 길이 레코드를 사용하기 때문에 가능)에서 먼저 뒤로 탐색하고 레코드 오프셋을 읽고 이를 사용하여 모양 파일에서 올바른 위치를 찾는 것이 가능합니다. .shp 파일. 동일한 방법을 사용하여 임의의 수의 레코드를 앞으로 탐색하는 것도 가능합니다.

셰이프 파일 속성 형식( .dbf )

각 모양의 속성은 dBase 형식으로 저장됩니다. 또한 사용할 수 있는 대체 형식은 개방형 사양이 있는 xBase 형식이며 Shapefile C 라이브러리와 같은 오픈 소스 Shapefile 라이브러리에서 사용됩니다. [2] Microsoft Excel에서 .dbf를 열면 해당 소프트웨어를 사용하여 속성을 볼 수 있지만 Excel 내에서 편집하면 shapefile이 손상될 수 있습니다. 그럼에도 불구하고 사용자는 GIS 소프트웨어 외부에서 shapefile 속성을 보고 배포하기 위해 Excel에서 .dbf 파일을 열고 스프레드시트로 저장하는 경우가 많습니다.

셰이프 파일 투영 형식( .prj )

.prj 파일에 포함된 투영 정보는 .shp 파일에 포함된 데이터를 올바르게 이해하는 데 중요합니다. 기술적으로 선택 사항이지만 주어진 점의 투영을 추측하는 것이 반드시 가능한 것은 아니기 때문에 가장 자주 제공됩니다. 파일은 WKT(well-known text) 형식으로 저장됩니다.

.prj 파일에 포함된 몇 가지 일반적인 정보는 다음과 같습니다.

  • 지리 좌표계
  • 데이텀(측지)
  • 회전 타원체
  • 본초 자오선
  • 지도 투영
  • 사용 단위
  • 지도 투영을 사용하는 데 필요한 매개변수, 예:
    • 원산지 위도
    • 스케일 팩터
    • 중앙 자오선
    • 거짓 북향
    • 거짓 동쪽
    • 표준 병렬

    셰이프 파일 공간 인덱스 형식( .sbn )

    이것은 Esri 소프트웨어에서만 사용되는 바이너리 공간 인덱스 파일입니다. 형식은 문서화되지 않았으며 다른 공급업체에서 구현하지 않습니다. .shp 파일에는 공간 데이터를 성공적으로 구문 분석하는 데 필요한 모든 정보가 포함되어 있으므로 .sbn 파일이 꼭 필요한 것은 아닙니다.


    다각형 집합에 대한 각 다각형의 최대 점 찾기 R

    이 질문에 대한 답변이 다른 곳에서 이루어졌다고 확신하지만 검색을 통해 답을 찾을 수 없었습니다.

    각 도시의 인구와 함께 국가 내의 도시를 나타내는 포인트가 있습니다. 카운티의 폴리곤 파일도 있습니다. 각 카운티 내에서 가장 큰 도시의 위치를 ​​찾고 싶습니다.

    structure(list(국가 = c("us", "us", "us", "us", "us", "us", "us", "us", "us", "us", "us ",
    "저희", "저희", "저희", "저희", "저희", "저희", "저희", "저희", "저희", "저희", "저희", "저희", "저희" ", "us"), City = c("cabarrus", "cox store", "cal-vel", "briarwood townhouses", "barker heights", "davie
    crossroads", "crab point Village", "azalea", "chesterfield", "charlesmont", "connor", "clover garden", "corriher heights", "callisons", "crestview acres", "clegg", "canaan park", "chantilly", "belgrade", "brice crossroads", "bluff", "butner", "bottom", "bandy", "bostian heights"), AccentCity = c("Cabarrus", "Cox Store" , "Cal-Vel", "Briarwood Townhouses", "Barker Heights", "Davie Crossroads", "Crab Point Village", "Azalea", "Chesterfield", "Charlesmont", "Connor", "Clover Garden", " Corriher Heights", "Callisons", "Crestview Acres", "Clegg", "Canaan Park", "Chantilly", "Belgrade", "Brices Crossroads", "Bluff", "Butner", "Bottom", "Bandy" , "보스티안 하이츠"), 지역 = c("NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC" , "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", " ANC", "NC", "NC"), 인구 = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_NA_integer_, _integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_), 위도 = (35.2369444, 35.275, 36.4291667, 35.295, 35.3111111, 35.8319444, 34.7602778, 35.58, 35.81, 5.9341667, 35.7419444, 36.1883333, 35.5605556, 35.0841667, 35.0213889, 35.8655556, 36.2761111, 36.3016667, 34.88, 34.8186111, 35.8377778, 36.1319444, 36.4747222, 35.6419444, 35.7544444), 경도 = C (-80.5419444, -82.0352778, -78.9694444, -81.5238889, -82.4441667, -80.535, -76.7305556, -82.4713889, -81.6611111, -81.5127778, -78.1486111, -79.4630556, -80.635, -76.7255556, -80.5427778, -78.8497222, -79.7852778, -76.1711111, -77.2352778, -78.1016667, -82.8580556, -78.7569444 , -80.7741667, -81.09, -80.9294444)), .Names = c("국가", "도시", "AccentCity", "지역", "인구", "위도", "경도"), row.names = c(544L, 889L, 551L, 434L, 190L, 975L, 894L, 147L, 717L, 700L, 831L, 773L, 862L, 559L, 915L, 5853L, 6543L, 262L, 437L, 372L, 537L, 406L, 178L, 02L), )

    노스캐롤라이나에서 읽을 코드

    각 카운티 내에서 인구가 가장 많은 도시를 찾고 싶습니다. 재현 가능한 예가 없어 죄송합니다. 그랬다면 답이 나왔을 텐데!


    3 답변 3

    If you do overlay(pts, polys) where pts is a SpatialPointsDataFrame object and polys is a SpatialPolygonsDataFrame object then you get back a vector the same length as the points giving the row of the polygons data frame. So all you then need to do to combine the polygon data onto the points data frame is:

    HOWEVER! If any of your points fall outside all your polygons, then overlay returns an NA, which will cause polys[o,] to fail, so either make sure all your points are inside polygons or you'll have to think of another way to assign values for points outside the polygon.


    Syntax

    The point features from which distances to the near features will be calculated.

    The points to which distances from the input features will be calculated. Distances between points within the same feature class or layer can be determined by specifying the same feature class or layer for the input and near features.

    The table containing the list of input features and information about all near features within the search radius. If a search radius is not specified, distances from all input features to all near features are calculated.

    Specifies the radius used to search for candidate near features. The near features within this radius are considered for calculating the nearest feature. If no value is specified (that is, the default (empty) radius is used) all near features are considered for calculation. The unit of search radius defaults to units of the input features. The units can be changed to any other unit. However, this has no impact on the units of the output DISTANCE field which is based on the units of the coordinate system of the input features.


    비디오 보기: QGIS Sochi 03 shp save as