Vamos a decir que hay punto A capa con 300 puntos y punto capa B con un punto
¿Cómo crear una capa de línea que conecta todos los puntos en la capa A un punto en la capa B?
Usar QGIS o PostGIS.
Vamos a decir que hay punto A capa con 300 puntos y punto capa B con un punto
¿Cómo crear una capa de línea que conecta todos los puntos en la capa A un punto en la capa B?
Usar QGIS o PostGIS.
En QGIS, puede utilizar los Puntos de conexión plugin que se puede descargar desde:
Plugins > Manage and Install Plugins...
Ejemplo:
Aquí hay un par de capas, layer_A
tiene un montón de puntos; layer_B
tiene uno. Asegúrese de que ambas capas contienen un campo de entero donde los valores son exactamente los mismos (por ejemplo, mis dos capas tienen un id
campo donde todos los valores son 1
). El plugin utiliza para conectar los puntos. Cuando el plugin está activado, ir a su configuración:
Si las capas son puntos esta debajo de consulta debe trabajar justo clavija en sus propios datos. Hice una prueba con la creación de líneas de 1 capa con 150 filas de punto y otra con 1 punto
drop table if exists line;
create table line as
select layer1.id ,st_makeline(layer1.geom,point.geom) as geom from layer1,point
Suponiendo que a partir de esta situación (una capa de puntos con una característica y una capa de puntos con 300 características):
puede ejecutar este código en la Consola de Python (después de haber cargado las dos capas de interés en QGIS):
from qgis.core import *
from qgis.PyQt.QtCore import QVariant
layer1 = QgsMapLayerRegistry.instance().mapLayersByName('1point')[0]
crs = layer1.crs().toWkt()
layer2 = QgsMapLayerRegistry.instance().mapLayersByName('300points')[0]
outLayer = QgsVectorLayer('Linestring?crs='+ crs, 'line_output' , 'memory')
prov = outLayer.dataProvider()
fields = layer1.pendingFields()
for field in layer2.pendingFields():
fields.append(field)
prov.addAttributes(fields)
outLayer.updateFields()
for feature in layer1.getFeatures():
coords = feature.geometry().asPoint()
attr1 = feature.attributes()
for feat in layer2.getFeatures():
seg_start = coords
seg_end = feat.geometry().asPoint()
attr2 = feat.attributes()
attrs = attr1 + attr2
outGeom = QgsFeature()
outGeom.setGeometry(QgsGeometry.fromPolyline([seg_start, seg_end]))
outGeom.setAttributes(attrs)
prov.addFeatures([outGeom])
QgsMapLayerRegistry.instance().addMapLayer(outLayer)
para la obtención de este resultado:
Sólo la necesidad de adaptar los nombres de las capas ('1point'
y '300points'
) a los nombres con los que se cargan en el Panel Capas.
Mi enfoque de trabajo independientemente de la cantidad de características de ambas capas.
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.