Страница 1 из 1

QGIS. И снова про рисование секторов.

Добавлено: 01 фев 2016, 23:17
evgenius
Всем доброго!

Нужно средствами QGIS нарисовать сектора (сделать векторный слой) по данным из csv файла (номер точки, долгота, широта, азимут, угол раскрыва сектора). Пример входных данных ниже:

Код: Выделить всё

X,Y,id,Longitude,Latitude,Azimuth,Angle
37.16738787,52.181267327,46,37.167387869999999,52.181267327000000,30,21
38.45999924,52.304056244,91,38.459999240000002,52.304056243999995,70,34
38.15383257,52.269856247,139,38.153832569999999,52.269856247000000,180,31
38.05638813,52.272305993,178,38.056388130000002,52.272305993000003,320,30
Тема повторяет вот эту: viewtopic.php?f=17&t=18754&p=125994&hil ... 80#p125994
Но я только начал изучать QGIS, пролистал QGIS Training Manual от и до, но воз и ныне там.
Прошу подсказать тезисно самый простой вариант решения (типа: открываешь консоль Питона и выполняешь вот этот код).
Буду благодарен, если кинете пример.
Если нет, все равно - спасибо, и по каким ключевым словам гуглить?

Re: QGIS. И снова про рисование секторов.

Добавлено: 02 фев 2016, 08:38
evgenius
И да:
- угол раскрыва сектора может быть от 1 до 360 градусов. Т.е. создание символа и поворот его не решает задачу.
- вершина сектора - в точке с указанными координатами.
- азимут сектора - согласно исходным данным.

Re: QGIS. И снова про рисование секторов.

Добавлено: 05 фев 2016, 14:40
evgenius
Я пытаюсь рассуждать логически: если рисовать полигонами - многовато будет лишней информации для одной лишь функции визуализации.
Закон Оккамы подсказывает мне, что лучше бы поковырять в сторону стилей отображения указанных точек.
Вопросы:
1) Я на верном пути?
2) Если да, как заставить qgis менять угол раскрыва сектора в зависимости от значения атрибута Angle, который может быть в диапазоне от 1 до 360 град.?

Re: QGIS. И снова про рисование секторов.

Добавлено: 05 фев 2016, 17:50
darsvid
сегодня появился новый плагин - возможно, вам подойдет
https://github.com/Septima/qgis-wedgebuffer

Re: QGIS. И снова про рисование секторов.

Добавлено: 08 фев 2016, 11:11
evgenius
Спасибо!
Хоть это не совсем то, нужно отображение символа в зависимости от выбранного масштаба (длина сектора в пикселях), но возможно через github удастся найти что-то приемлемое.

Re: QGIS. И снова про рисование секторов.

Добавлено: 09 фев 2016, 16:58
xen87
Не знаю, понял ли я суть задачи, но могу поделиться таким примером
типа: открываешь консоль Питона и выполняешь вот этот код

Код: Выделить всё

import math

#радиус сектора
R = 100
s1 = []
s2 = []
points = []
#центр - начальная точка сектора
s2.append([0,0])
#15 - начало сектора (в град.), 270 - конец сектора (в град.), 10 - шаг (в град.)
for grad in xrange(90,360,10):
    #из град в радианы + вычисление координат точек сектора
    x = R * math.cos(math.radians(grad))
    y = R * math.sin(math.radians(grad))
    s1.append(x)
    s1.append(y)
    #создание списка координат точек для сектора
    s2.append(s1)
    s1 = []
    #    print x, y
# преобразование списка точек для QgsGeometry.fromPolygon()
for i in s2:
    points.append(QgsPoint(i[0],i[1]))

#рисуем сектор - полигон
layer =  QgsVectorLayer('Polygon', 'poly' , "memory")
pr = layer.dataProvider() 
poly = QgsFeature()
poly.setGeometry(QgsGeometry.fromPolygon([points]))
pr.addFeatures([poly])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])

del layer
Да простят меня гуру питона :oops:

В результате получаем вот такую картинку: