QGIS의 ID 열에 대해 auto_increment 방법이 있습니까


22

가상의지도를 만들고 있으므로 많은 점, 선 및 확실한 다각형을 만들어야합니다. 나중에 데이터를 geojson으로 내 보냅니다. 그러나 그 전에는 모든 요소에 고유 ID를 부여해야합니다.

가장 큰 다각형이 가장 작은 ID를 얻는 것처럼 특별한 정렬이 필요하지 않습니다. 난 그냥 필요한 모든 다각형 으로 ID , 말 없이 수동으로 내가 지금 할 필요가있다.

누군가가 그렇게하는 방법을 알고 있다면 좋을 것입니다.


shapefile을 사용하고 있습니까? 내보낼 때마다 ID가 동일해야합니까, 아니면 모든 편집 세션 후에 ID 필드를 채울 수 있습니까?
DPSSpatial

스크립트에서 다각형을 작성하거나 QGIS 데스크탑에서 디지털화하거나 쉐이프 파일 등에서 복사하는 방법은 무엇입니까?
landocalrissian

글쎄, QGIS에서 도형을 만들고 Geojson으로 저장하면 괜찮습니다. 죄송합니다. 질문이 잘못 되었습니까?
kwoxer

답변:


26

필드 계산기를 사용하는 방법은 다음과 같습니다.

에 ID가 없습니다

  1. ID를 입력하지 않고 모든 기능을 디지털화하십시오.
  2. 내보내기 전에 필드 계산기를 사용하여 '$ Id'식으로 고유 ID를 업데이트하십시오.

아이디가 없습니다

일부 ID는 이미

  1. 이미 ID가 있다면 '-$ Id'를 사용할 수 있습니다. id 행에서 'NULL'이라는 새로운 기능을 선택해야합니다. 열을 주문하면됩니다.
  2. 이제 그림의 단계를 수행하십시오.

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


그래 매우 쉽고 올바르게 작동합니다. 고마워요 Btw : 이미 존재하는 일부 ID에서도 어떻게 수행하는지 알고 있습니까? 이 작업을 수행하면 -2 -3 등이 표시됩니다.
kwoxer

해결책을 찾아서 게시물에 추가했습니다. 다시 감사합니다.
kwoxer 2019

6

할렐루야! 또는 유레카. 또는 무엇이든. 할 수 있습니다. shapefile로.

  1. 아직없는 경우 정수 (정수) 유형의 기능 ID (예 : "FID")를 포함하는 필드를 추가하십시오 .
  2. 열기 레이어 속성 (레이어를 마우스 오른쪽 버튼으로 클릭하고 속성을 ... 또는 두 번 클릭 층) (가)에서을 클릭합니다 양식 속성 다음 아래 탭을 일반 의 선택을 취소 편집 과에서 기본값 필드에 기본값 유형 maximum("FID") + 1.

Editable 을 선택 취소 하면 다른 값을 입력하거나 존재하는 값을 삭제할 수 없습니다. ID가없는 값이 있으면이 값은 업데이트되지 않습니다. 어느 시점 에서 업데이트시 기본값 적용 을 확인하고 값이 1보다 큰 레코드가 아닌 레코드를 편집 할 때 레코드를 업데이트하기 위해 0 또는 NULL 값을 확인하도록 수식을 수정하는 실험을 할 것입니다. 포스트에 고유 한 값으로 FID 필드를 업데이트하는 방법에 대해 설명했습니다. 셰이프 파일에 이미 피쳐가있는 후 필드를 추가 한 경우 수행해야합니다.)

이것은 셰이프 파일이 아닌 현재 맵 파일과 함께 저장되므로 해당 셰이프 파일을 여러 번 추가하면 레이어 스타일의 해당 부분을 새로 추가 된 레이어에 복사해야합니다. 이렇게하려면 레이어를 마우스 오른쪽 단추로 클릭하고 스타일> 스타일 복사> 필드를 선택한 다음 다른 레이어를 마우스 오른쪽 단추로 클릭하고 스타일> 스타일 붙여 넣기> 모든 스타일 범주를 선택하십시오 (또는 필드 계속 ). 셰이프 파일을 기반으로 스타일의 해당 부분을 다른 레이어로 복사 할 수도 있지만 ID 필드의 이름은 복사하려는 레이어와 이름이 같아야합니다.

레이어 속성


이 기능을 사용하려면 최소한 하나의 기능을 작성하고 FID를 입력 한 다음 속성 양식 기본값을 변경해야합니다. 그렇지 않으면 NULL FID로 끝납니다.
Techie_Gus

5

vinayan의 게시물에 추가하고 rownum 함수를 간단히 언급하고 싶습니다. 매우 유사하고 경우에 따라 조금 더 편리 할 수도 있습니다.

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

id 기능 ID를 반환합니다.즉, 항상 0 에서 시작 합니다 .
rownum 행 번호를 반환하는데, 이는 하나 에서 시작한다는 의미입니다.

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

따라서 기본적으로 자동 증분을 0에서 시작하려면 $ id 로 이동하고 1에서 시작하려면 $ rownum으로 이동하십시오 .


실제로 시도하고 좋은 해결책이었습니다. 그러나이 솔루션을 사용하면 이미 일부 ID가 있고 유지하려는 경우 rownum 기능이 좋지 않습니다. 이 기능은 항상 1로 시작합니다. 위의 방법은 설정하기가 더 어려울지라도 훨씬 지능적으로 계산됩니다. 따라서 대안에 감사하지만 지금까지 ID 기능은 내가 선호하는 솔루션입니다. =)
kwoxer

4

이 주제는 다음과 같습니다. QGIS에서 자동 증분 기본 키를 사용하여 셰이프 파일 작성

내 제안은 다음과 같습니다.

1) SQLITE / SpatialLite 데이터베이스는 INTEGER PRIMARY KEY로 설정된 필드에서 자동 증가를 지원합니다.

INSERT에서 ROWID 또는 INTEGER PRIMARY KEY 열에 명시 적으로 값이 제공되지 않으면 사용되지 않는 정수 (일반적으로 현재 사용중인 가장 큰 ROWID보다 큰 정수)로 자동 채워집니다. AUTOINCREMENT 키워드 사용 여부에 관계없이 마찬가지입니다.

다각형을 편집 / 작성할 때마다 해당 속성을 채울 수 있으며 SQLITE는 INTEGER PRIMARY KEY 유형으로 설정 한 필드에서 점진적으로 고유 한 값을 제공합니다.

GEOJSON으로 내보낼 준비가되면 모두 고유 한 ID로 설정됩니다.

2) 셰이프 파일을 사용하는 경우 INTEGER 유형의 OBJECTID 필드를 작성하고 필드 계산기 표현식을 사용하여 다각형을 편집 / 작성할 때마다 해당 필드를 채우고 내 보내야합니다. 다각형에 원래 ID가 없어졌지만 .SHP를 사용하여이를 달성 할 수있는 유일한 방법입니다. (필드 계산기 표현을 찾아야합니다).

PostGIS는 당신이 탐구하고 싶은 또 다른 데이터 소스이지만, SQLITE보다 더 많은 노력을 기울이지 만 앞으로 나아갈 때 그러한 시스템에서 가치를 찾을 수 있습니다 ...


설명해 주셔서 감사합니다. 그러나 도구에서 직접 auto_increment 옵션 대신 좋은 해결책이 될 것이라고 생각하지 않습니다. 이미 많은 데이터 형식이 있으며 다른 도구를 원하지 않습니다. 나는 약간의 시간이있을 때 그것을 위해 어쩌면 내가 ... 애드온을 작성해야
kwoxer

.SHP를 포기하는 것이 더 쉬울 수 있습니다! 새로운 벤처 기업이 누구인지 누가 알
겠습니까

2

오래된 게시물이지만 빠른 솔루션을 찾는 다른 사람들을 위해 $ ID + 1로 필드를 만드는 것이 1부터 시작하여 자동으로 생성됩니다!


2

QGIS 3 업데이트

나는 이것에 꽤 늦었지만 항상 업데이트를 제공하는 것이 좋습니다.

QGIS 3에는 이제 정확한 작업을 수행하는 데 사용할 수있는 기본 도구가 있으며 "자동 증분 필드 추가"라고합니다.

필드 계산기에서 표현식을 사용하거나 코딩을 할 필요는 없지만 그럼에도 불구하고 이들은 여전히 ​​매우 유용하고 알기 쉽습니다.

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


1

이 작업을 수행하는 가장 쉬운 방법은 아마도 파이썬 스크립트이거나 필드 계산기를 사용하는 것입니다. 죄송합니다. 다른 사람이 없을 수도 있습니다. 그동안 파이썬 스크립트를 검색했습니다. ArcGIS에 대해서는 이것에 대해 많은 것을 보았지만 QGIS에는 무언가가 있다고 확신합니다.


실제로 기능 요청이없는 것이 가장 좋습니다. 클릭 한 번으로 해결하는 경우에도 QGIS에 추가 된 Python 스크립트를 원하지 않습니다. 하지만 고마워
kwoxer

1

사람이 소화 할 수있는 것이 필요하지 않은 경우 이제 쉽게 고칠 수 있습니다. 필드 속성에서 "UUID Generator"를 선택하고 모든 것을 비워 두십시오.

필드에 자동으로 UUID가 생성됩니다. 단순한 숫자 ($ id 또는 $ rownum)만큼 친숙하지는 않지만 처음부터 UUID를 생성하므로 연속적인 단계가 없습니다.여기에 이미지 설명을 입력하십시오


0

postgreSQL 데이터베이스 레이어를 사용할 때 이것이 작동하지 않는 것으로 추가하고 싶습니다. $ ID와 $ rownum은 모두 0을 반환합니다. PostgreSQL 9.6 QGIS 2.18.12


0

이러한 솔루션은 더 이상 QGIS 2.01 Dufour에서 작동하지 않았습니다. 입력 $id식 입력 필드에 'ID'라는 이름의 새로운 또는 기존 필드 것은 나에게 오류 "표현이 잘못되었습니다"했다

작업은 기능을 입력 한 $rownum다음 "확인"을 클릭 하는 것이 었습니다

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


0

첫 번째 colmn (id)을 삭제하고 "가상 필드"로 새로 만들 수 있습니다. 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

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