QGIS에서 폴리 라인 셰이프 파일을 따라 임의의 점을 만들려고합니다. 기본적으로 '연구 도구'의 '무작위 점'도구와 유사하지만 다각형 대신 폴리 라인에 사용됩니다.
선 파일을 다각형 모양 파일로 변환하려고 시도했지만 일부 영역을 다각형으로 채우고 다른 영역은 긴 선 유형 다각형으로 유지합니다.
저는 QGIS를 처음 접했고 파이썬 코드에 익숙하지 않습니다.
QGIS에서 폴리 라인 셰이프 파일을 따라 임의의 점을 만들려고합니다. 기본적으로 '연구 도구'의 '무작위 점'도구와 유사하지만 다각형 대신 폴리 라인에 사용됩니다.
선 파일을 다각형 모양 파일로 변환하려고 시도했지만 일부 영역을 다각형으로 채우고 다른 영역은 긴 선 유형 다각형으로 유지합니다.
저는 QGIS를 처음 접했고 파이썬 코드에 익숙하지 않습니다.
답변:
이 코드는 QGIS의 최신 개발 빌드에서 작동합니다.
from qgis.utils import iface
from qgis.core import *
from PyQt4.QtCore import QVariant
import random
def createRandomPoints(count):
# Create a new memory layer to store the points.
vl = QgsVectorLayer("Point", "distance nodes", "memory")
pr = vl.dataProvider()
pr.addAttributes( [ QgsField("distance", QVariant.Int) ] )
layer = iface.mapCanvas().currentLayer()
# For each selected object
for feature in layer.selectedFeatures():
geom = feature.geometry()
length = geom.length()
feats = []
# Loop until we reach the needed count of points.
for i in xrange(0,count):
# Get the random distance along the line.
distance = random.uniform(0, length)
# Work out the location of the point at that distance.
point = geom.interpolate(distance)
# Create the new feature.
fet = QgsFeature()
fet.setAttributeMap( { 0 : distance } )
fet.setGeometry(point)
feats.append(fet)
pr.addFeatures(feats)
vl.updateExtents()
QgsMapLayerRegistry.instance().addMapLayer(vl)
나는 당신이 파이썬 코드에 익숙하지 않다고 말했지만 이것을 쉽게 실행할 수 있어야합니다. 위의 코드를 파일에 복사하고 (광산이라고 함 locate.py
) ~/.qgis/python
Windows 7 C:\Users\{your user name}\.qgis\python\
또는 Windows XP에있는 경우 해당 파일을C:\Documents and Settings\{your user name}\.qgis\python\
파일이 python 폴더에 있으면 QGIS를 열고 일부 선 객체를 선택하십시오.
그런 다음 Python 콘솔을 열고 다음 코드를 실행하십시오.
import locate.py
locate.createRandomPoints(10)
결과는 다음과 같아야합니다
다시 실행하려면 더 많은 행을 선택 locate.createRandomPoints(10)
하고 Python 콘솔에서 다시 실행 하십시오.
참고 : locate.createRandomPoints (10) 여기서 10은 라인 당 생성 할 포인트 수입니다.
import locate
파이썬 콘솔에서 .py 를 사용할 필요가 없었습니까?