Создать карту из таблицы

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
tems-ya
Интересующийся
Сообщения: 39
Зарегистрирован: 28 янв 2015, 22:07
Репутация: 1
Откуда: Воронеж

Создать карту из таблицы

Сообщение tems-ya » 03 окт 2019, 14:21

Добрый день!

Вопрос собственно простой.

Как одним махом превратить прямоугольную таблицу с координатами и данными в карту с точками и атрибутами.

Сейчас имею, условно работающим что-то типа такого (иллюстрация на уровне идеи)

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

q = QSqlQuery(db)
q.exec_("select * from MyTable")

while(q.next()):
    ATR1 = q.value(1)
    ATR2 = q.value(2)
    ............
    LAT = float(q.value(78))
    LON = float(q.value(79))

т.е. на мой неискушенный взгляд, фактически последовательный перебор всех значений. Если сюда попытаться интегрировать что-то типа такого:

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

q = QSqlQuery(db)
q.exec_("select * from MyTable")

#---------------------------------------------------------------------
layer = QgsVectorLayer('Point?crs=epsg:4326', 'MyPoint' ,'memory')
pr = layer.dataProvider()
pt = QgsFeature()
#---------------------------------------------------------------------

while(q.next()):
	ATR1 = q.value(1)
 	ATR2 = q.value(2)
	............
	LAT = float(q.value(78))
	LON = float(q.value(79))

	#---------------------------------------------------------------------
	point1 = QgsPointXY(LAT,LON)
	pt.setGeometry(QgsGeometry.fromPointXY(point1))
	pr.addFeatures([pt])
	layer.updateExtents()
	#---------------------------------------------------------------------

QgsProject.instance().addMapLayer(layer)
короче, на MapIfo такой фокус не проходил из-за крайне медленной работы.

Думаю здесь будет тоже самое.

Собственно вопрос, как, какими стредствами можно заставить Qgis прревраить целиком массив данных в карту не прибегаю к поэлементному перебору.

Кто сталкивался или решал такие задачи не стесняемя, приветствуются любые идеи.

Спасибо.

Денис Афанасьев
Участник
Сообщения: 67
Зарегистрирован: 30 сен 2013, 15:45
Репутация: 18

Re: Создать карту из таблицы

Сообщение Денис Афанасьев » 03 окт 2019, 14:25

Таблицу можете выложить?

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создать карту из таблицы

Сообщение trir » 03 окт 2019, 14:30

сделать это сразу в запросе select

tems-ya
Интересующийся
Сообщения: 39
Зарегистрирован: 28 янв 2015, 22:07
Репутация: 1
Откуда: Воронеж

Re: Создать карту из таблицы

Сообщение tems-ya » 03 окт 2019, 14:57

Таблицу можете выложить?
- не хотелось бы этого делать, чтобы не скатываться на частности, данные в ней - это не принципиально, могут быть любые. Пусть для примера будет, чтото типа:

Col1 Col2 ... ColN LAT LON
-------------------------------------------------------
Atr11 Atr12 ... Atr1N LAT11 LON11
Atr21 Atr22 ... Atr2N LAT21 LON21
.............
.............
.............
AtrM1 AtrM2 ... AtrMN LATM1 LONM1
сделать это сразу в запросе select
- а примерчик можно рабочий, ну или иллюстрацию на уровне идеи, чтобы можно было за что зацепиться и нагуглить решение. Хоть немного конкретики, какие классы использовать, или может технологии какие, слои ...Пока совсем непонятно.

Пока
сделать это сразу в запросе select
- извините, не дорос, в процессе :) , мне надо как тем подводника, что у чукчи спрашивали, куда делась американская подводная лодка, - "ты рукой покажи, куда она пошла" :)

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создать карту из таблицы

Сообщение trir » 03 окт 2019, 15:06

uri = "/some/path/file.csv?delimiter=%s&xField=%s&yField=%s" % (";", "x", "y")
vlayer = QgsVectorLayer(uri, "layer_name_you_like", "delimitedtext")
uri = "file:///some/path/file.csv?delimiter=%s&crs=epsg:4723&wktField=%s" % (";", "shape")
https://docs.qgis.org/2.8/ru/docs/pyqgi ... layer.html

tems-ya
Интересующийся
Сообщения: 39
Зарегистрирован: 28 янв 2015, 22:07
Репутация: 1
Откуда: Воронеж

Re: Создать карту из таблицы

Сообщение tems-ya » 03 окт 2019, 15:28

:( - это не то. Никаких файлов. Все данные из БД должны загружаються в память и в памяти храниться и обрабатываться. И по ним нужно построить карту...как-то

Хотя... можно обдумать и такой вариант.... костыли, конечно, жуткие, но спасибо и за такую идею...

Коллеги, может кто что еще предложит?

С виртуальными слоями никто не работал?

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создать карту из таблицы

Сообщение trir » 03 окт 2019, 15:31

Из какой БД?

tems-ya
Интересующийся
Сообщения: 39
Зарегистрирован: 28 янв 2015, 22:07
Репутация: 1
Откуда: Воронеж

Re: Создать карту из таблицы

Сообщение tems-ya » 03 окт 2019, 15:44

Oracle. Причем без геонадстроек. Доступны только координаты. Чисто теоретически, могу на стороне оракла и его средствами сформировать ручками что-нибудь, если это нужно...

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Создать карту из таблицы

Сообщение gamm » 03 окт 2019, 16:09

tems-ya писал(а):
03 окт 2019, 15:28
это не то. Никаких файлов. Все данные из БД должны загружаються в память и в памяти храниться и обрабатываться. И по ним нужно построить карту...как-то
План А) Написать собственную ГИС для визуализации данных, которые "в памяти" (в чьей памяти, кстати - в какой среде, что там у Оракла нынче, все еще джава? и куда вы "карту" рисовать собрались?)

План В) Использовать готовую ГИС, значит вывести данные в ГИС файл, и рисовать его средствами ГИС.

tems-ya
Интересующийся
Сообщения: 39
Зарегистрирован: 28 янв 2015, 22:07
Репутация: 1
Откуда: Воронеж

Re: Создать карту из таблицы

Сообщение tems-ya » 03 окт 2019, 16:41

План А) - шутку оценил :)

Мой вопрос был как раз про План В).
ИМХО csv - ни разу не ГИС формат.
ГИC файлы это shp. У меня в БД храняться данные с координатами.

Как мне средствами ГИС сформировать из них shp файл не плодя лишних (не нужных сущностей в виде всяких временных костылей, типа промежуточных csv). Подключился к БД, скачал данные и сохранил их в виде shp.

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Создать карту из таблицы

Сообщение Игорь Лебедь » 03 окт 2019, 17:30

QGIS - База данных - Менеджер БД, там подключаете свою базу.
Далее запускаете инструмент "Создать точечный слой из таблицы".

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создать карту из таблицы

Сообщение trir » 03 окт 2019, 18:16

SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL)
https://docs.oracle.com/database/121/SP ... m#SPATL529

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Создать карту из таблицы

Сообщение gamm » 03 окт 2019, 18:18

trir писал(а):
03 окт 2019, 18:16
SDO_GEOMETRY
а оно без геонахлобучки (которой у ТС нет) работать точно будет?

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Создать карту из таблицы

Сообщение gamm » 03 окт 2019, 18:21

tems-ya писал(а):
03 окт 2019, 16:41
ИМХО csv - ни разу не ГИС формат.
ГИC файлы это shp.
какая разница, csv или текстовый MIF/MID, если shape не нравится? зато значки и надписи можно сразу соорудить. Либо цепляться из какой-нибудь ГИС прямо к базе, как написано выше

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создать карту из таблицы

Сообщение trir » 03 окт 2019, 18:24

Oracle Locator (also referred to as Locator) is a feature of Oracle Database Standard Edition
https://docs.oracle.com/database/121/SP ... m#SPATL340

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя