¿Hay una forma de auto_increment para la columna de ID en QGIS?

16

Estoy creando un mapa ficticio y, por lo tanto, necesito crear muchos puntos, líneas y, por supuesto, polígonos. Más tarde exporto mis datos como geojson. Pero antes de eso, siempre tengo que ir y dar a cada elemento una identificación única.

No necesito una clasificación especial, ya que el polígono más grande tiene la ID más pequeña o algo así. Simplemente necesito todos los polígonos con una ID al final, sin haciendo manualmente como tengo que hacer ahora.

Sería genial si alguien sabe cómo hacerlo.

    
pregunta kwoxer 29.01.2015 - 19:02

8 respuestas

21

Usar la calculadora de campo es el camino a seguir:

No se proporcionó ID en

  1. Digitalice cada función sin ingresar ninguna identificación.
  2. Antes de exportar, actualice los Id. únicos con la expresión '$ Id' usando el campo calculadora.

AlgunosIDyaestándadosen

  1. SiyatieneID,puedeusar'-$Id'.AsegúresedeseleccionarlasnuevasCaracterísticas,loquesignificaqueson'NULL'enlafiladeidentificación.Simplementehagaesoordenandolacolumna.
  2. Ahorasiguelospasosdelasfotos:

    
respondido por el vinayan 03.02.2015 - 10:53
4

Este tema ha llegado hasta aquí: Crear Shapefile con clave principal de incremento automático en QGIS

Mis sugerencias serían:

1) Las bases de datos SQLITE / SpatialLite admiten el incremento automático en un campo establecido en INTEGER PRIMARY KEY:

  

En un INSERT, si la columna ROWID o INTEGER PRIMARY KEY no está   dado explícitamente un valor, entonces se llenará automáticamente con un   entero no utilizado, generalmente el más grande que el ROWID más grande actualmente   en uso. Esto es cierto independientemente de si el autoincremento o no   Se utiliza la palabra clave.

Cada vez que edite / cree polígonos, puede completar sus atributos, y SQLITE le dará un valor único incremental en el campo que ha establecido en el tipo INTEGER PRIMARY KEY.

Cuando esté listo para exportar a GEOJSON, estará listo con su ID ÚNICA.

2) Si usa Shapefiles, cree un campo OBJECTID de tipo INTEGER y use una expresión de calculadora de campo para rellenar ese campo cada vez que edite / cree polígonos y necesite exportarlos. Perderá la ID original que tuvo un polígono, pero esta es la única forma de lograrlo utilizando .SHP. (Tendré que encontrar la expresión de la calculadora de campo).

PostGIS es otra fuente de datos que tal vez desee explorar, aunque más de una elevación considerable que SQLITE, puede encontrar valor en dicho sistema a medida que avance ...

    
respondido por el DPSSpatial 29.01.2015 - 19:56
4

Me gustaría agregarlo a la publicación de vinayan y mencionar brevemente la función rownum , ya que es muy similar y en algunos casos podría ser un poco más conveniente.

iddevuelveFeatureID,loquesignificaquesiemprecomienzaencero.
rownumdevuelveelnúmerodelafila,loquesignificaquecomienzaenuno.

Básicamente, si desea que el incremento automático comience en 0, vaya por $ id , y si quiere que comience en 1, vaya por $ rownum .

    
respondido por el BritishSteel 12.02.2015 - 21:48
1

La forma más fácil de hacer esto sería probablemente con un script de python o tal vez sea posible con la calculadora de campo. Lo siento, no tengo uno para ti, tal vez alguien más lo tendrá. Mientras tanto, buscaría un script de python para ello. He visto mucho sobre esto para ArcGIS, pero estoy seguro de que hay algo para QGIS.

    
respondido por el Tangnar 29.01.2015 - 19:27
0

La publicación anterior, pero para cualquier otra persona que busque una solución rápida, fue crear un campo con $ ID + 1 y se generará automáticamente comenzando con 1.

    
respondido por el Blipple 27.03.2017 - 17:43
0

Me gustaría agregar que esto no parece funcionar cuando se utilizan capas de base de datos postgreSQL. $ ID y $ rownum todos devuelven 0. PostgreSQL 9.6 QGIS 2.18.12

    
respondido por el Tyler Veinot 25.08.2017 - 15:28
0

Si no necesitas algo humanamente digerible, ahora hay una solución fácil: En el campo de propiedades, seleccione "Generador UUID", y deje todo en blanco.

Esto creará automáticamente un UUID en el campo. No es tan amigable como un número simple (como por $ id o $ rownum), pero genera el UUID desde el principio, así que no hay pasos sucesivos.

    
respondido por el Horizen 26.09.2017 - 22:22
0

estas soluciones ya no me funcionaron en QGIS 2.01 Dufour. Escribir $id en un campo nuevo o existente llamado 'id' en el campo de entrada de la expresión me dio un error "La expresión no es válida"

Lo que funcionó fue escribir la función $rownum y luego hacer clic en "Aceptar"

    
respondido por el toms 18.12.2017 - 21:09

Lea otras preguntas en las etiquetas