QGIS 2.18.3을 사용하여 다각형 심볼에 임의의 점 패턴을 적용하고 싶습니다. 기본 스타일 관리자에는 Cemetery-25-50k라는 규칙적인 간격 패턴이 있습니다 (아래 이미지 참조). 이것은 좋은 출발점이지만 분명히 무작위는 아닙니다.
또는 레이어 속성 (아래) 내 포인트 패턴 채우기 옵션을 검토했지만 임의 패턴을 생성하는 것은 없습니다.
다시 생성해야하는 것은 ESRI Arcmap 랜덤 포인트 심볼로지입니다.
QGIS 2.18.3을 사용하여 다각형 심볼에 임의의 점 패턴을 적용하고 싶습니다. 기본 스타일 관리자에는 Cemetery-25-50k라는 규칙적인 간격 패턴이 있습니다 (아래 이미지 참조). 이것은 좋은 출발점이지만 분명히 무작위는 아닙니다.
또는 레이어 속성 (아래) 내 포인트 패턴 채우기 옵션을 검토했지만 임의 패턴을 생성하는 것은 없습니다.
다시 생성해야하는 것은 ESRI Arcmap 랜덤 포인트 심볼로지입니다.
답변:
다음 단계를 사용하여 임의의 점 기호를 추가 할 수 있습니다.
2.0
수평 변위 및 수직 변위에서 다음 기능을 사용하십시오.
5.1 수평 변위의 경우 :
randf(3,5)
5.2 수직 변위
randf(2,4)
점 레이어를 복제하고 가로 및 세로 거리를 각각 6과 3으로 변경합니다. 수평 변위 및 수직 변위에서 다음 기능을 사용하십시오.
6.1 수평 변위의 경우 :
randf(0,1)
6.2 수직 변위
randf(1,2)
심볼 크기를 2로 줄여야합니다 Pixels
다음 이미지에서 출력을 볼 수 있습니다.
작곡가에서 전설은 다음과 같습니다.
또 다른 기술은 InkScape를 사용하여 SVG를 만들고 QGIS에서 SVG 채우기 레이어를 사용하는 것입니다.
기호에 대한 통제력을 강화하고 (예를 들어 점이 아닌 무작위로 흩어진 나무를 그릴 수 있음) 간격을보다 효과적으로 제어 할 수 있습니다.
설정을 시험해보고 Remove결과가 좋지 않으면 언제든지 클릭 할 수 있습니다 .
다음은 QGIS 내장 트리 중 하나의 5 x 5 복사본의 무작위 그리드를 만든 곳입니다. 간격과 지터를 실험함으로써 다른 모양을 얻을 수 있습니다. QGIS의 수평 변위를 실험 할 수도 있습니다 . 수평 거리의 절반으로 설정하면 "바둑판 식"모양이 깨집니다 (벽에 벽돌과 같은 패턴이 나타남).
qgis 3.5.x에서 일부 조정이 가능한 온라인 스크립트를 찾았습니다.
원래 게시물을 잃어 버렸기 때문에 저자를 인정할 수 없습니다.
당신이하는 일은 :
스크립트의 원래 작성자 덕분입니다.
from qgis.core import *
from qgis.gui import *
import math
import random
"""
Define a grid based on the interval and the bounding box of
the feature. Grid will minimally cover the feature and be centre aligned
Create a multi-point geometry at the grid intersections where
the grid is enclosed by the feature - i.e. apply a clipping mask
Random value determines amount of randomness in X/Y within its
grid square a particular feature is allowed to have
"""
@qgsfunction(args='auto', group='Custom')
def fillGrid(xInterval, yInterval, rand, feature, parent):
box = feature.geometry().boundingBox()
#Create a grid that minimally covers the boundary
#using the supplied intervals and centre it
countX = math.ceil(box.width() / xInterval)
countY = math.ceil(box.height() / yInterval)
#Align the grid
gridX = countX * xInterval
gridY = countY * yInterval
dX= gridX - box.width()
dY= gridY - box.height()
xMin = box.xMinimum() - (dX/2)
yMin = box.yMinimum() - (dY/2)
points = []
#+1 to draw a symbol on the n+1th grid element
for xOff in range(countX+1):
for yOff in range(countY+1):
ptX = xMin + xOff*(xInterval) + rand * random.uniform(0,xInterval)
ptY = yMin + yOff*(yInterval) + rand * random.uniform(0,xInterval)
pt = QgsPointXY(ptX,ptY)
point = QgsGeometry.fromPointXY(pt)
if feature.geometry().contains(point):
points.append(pt)
return QgsGeometry.fromMultiPointXY(points)