10 votos

¿Dibujar los límites del conjunto de puntos usando QGIS?

Tengo un conjunto de puntos que me gustaría convertir en un polígono.

enter image description here

enter image description here

Intenté con el casco cóncavo pero no obtuve el polígono deseado como puede ver abajo,

enter image description here

Y cuando uso la Triangulación de Denaulay necesito borrar los triángulos exteriores.

enter image description here

¿Hay alguna forma eficiente de hacer lo mismo?

También intenté con el casco convexo.

enter image description here

5voto

xenny Puntos 670

Supongo que sabes qué puntos pertenecen a la "izquierda" o a la "derecha", porque de lo contrario hay muchas soluciones. Si es así, podrías usar la triangulación de Delaunay seguida de una selección de los triángulos "centrales". Con este método, no es necesario tener los puntos en un orden específico. Todo lo que necesitas considerar es el hecho de que los triángulos que necesitas deben tocar al menos un punto de cada lado.

abrir la tabla de atributos > seleccionar por expresión > "código" = 1

vector > herramienta de investigación > seleccionar por ubicación (nueva selección, intersección)

enter image description here

abrir la tabla de atributos > invertir la selección de los puntos (ctrl + R)

vector > herramienta de investigación > seleccionar por ubicación (eliminar de la selección, desarticulado)

enter image description here

vector > herramienta de geoprocesamiento > disolver

enter image description here

4voto

Keiko Puntos 149

Tengo el mismo resultado que @radouxju.

Operaciones :

  1. Seleccione una polilínea [seleccionar al hacer clic]

  2. Actualiza tu tabla de polilíneas y afecta un número a cada característica [calculadora de campo]

  3. Seleccione los puntos que intersectan una polilínea [herramienta de consulta espacial]

  4. Actualizar los puntos seleccionados por el valor de la polilínea previamente afectada [calculadora de campo]

  5. Mantén el punto de selección y selecciona los triángulos delaunay que intersectan estos puntos seleccionados [herramienta de consulta espacial]
    enter image description here
    enter image description here

  6. Invierte la selección de puntos o selecciona los puntos que intersectan la otra polilínea [selección por expresión] o [invertir la selección]

  7. Quitar de la selección actual los triángulos delaunay que están desunidos con los otros puntos [herramienta de consulta espacial]
    enter image description here
    enter image description here

  8. Fusionar las características por selección [herramienta de geoprocesamiento > disolver]
    enter image description here
    enter image description here

IMPORTANTE : ¡Debes tener las polilíneas para obtener este resultado!

1voto

DucDigital Puntos 351

Si tienes experiencia con la pitón, podrías usar la biblioteca de Shapely y crear un polígono a partir de los puntos de las dos líneas. Necesitarás decirle a la pitón cuáles son los puntos de inicio y final de ambas líneas.

from shapely.geometry import Point, Polygon, LineString
import geopandas as gpd
import pandas as pd
line1 = [(1,1),(2,1.2),(3,1)]
line2 = [(1,2),(2,2.2),(3,2)]
# you need to reverse the order of one line to make it a polygon
line2reverse = list(reversed(line2))
polgonList2 = line1 + line2reverse
Polygon(polgonList2)

Mejor aún: también puedes usar geopandas para hacerlo. Las geopandas te permiten guardar fácilmente en múltiples formatos incluyendo shapefiles

d = {'identifier' : [1, 2],
 'name' : ["Netherlands", "Germany"],
 "line1": [[(1,1),(2,1.2),(3,1)], [(1,1),(2,1.2),(3,1)]],
 "line2": [[(1.1,2.1),(2.1,2.3),(3.1,2.2)],[(1,2),(2,2.2),(3,2)]]
}

df = pd.DataFrame(d)
def makePolygon(row):
    line2reverse = list(reversed(row["line2"]))
    return Polygon(line1+line2reverse)    
geometries = []

for index, row in df.iterrows():
    geometries.append(makePolygon(row))
crs = {'init': 'epsg:4326'} 
gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometries)
gdf.to_file('MyGeometries.shp', driver='ESRI Shapefile')

puedes leer las geometrías de las líneas usando la función geopandas gpd.read_file().

Orden de los vértices de los polígonos en el SIG general: en el sentido de las agujas del reloj o en el sentido contrario.

https://nbviewer.jupyter.org/gist/rutgerhofste/b01c17aa6851ea577f10c21a4c3717bc

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X