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

QGIS привязать опоры к линиям в SQL

Добавлено: 30 май 2014, 12:54
Alex_mk
Добрый день.
У нас есть в БД таблица опор, где указаны их координаты и наименования. И таблица линий в БД, построенных по некоторым опорам из той таблицы. Опоры у нас по базе никак не привязаны к линиям в БД, то есть мы видим принадлежность опор к линии только визуально на карте. Встал вопрос о нахождении опор у соотвествующей линии.
Я полагаю, что нужно сделать в таблице опор поле ИД_линии, по которому они будут сопоставляться с таблицей линий для быстрой выборки необходимых, но данных много и как это сделать оптимальнее и быстрее, подскажите?
Сам работаю с этими данными недавно, по хорошему надо было изначально заносить данные таким образом.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 30 май 2014, 13:27
trir
Какая СУБД и не помешал бы пример данных
Я бы написал функцию которая искала столбы для линий используя Distance<0.1 и т. п.

Update: Почитайте, там есть функция "CreateTrkLine" - её можно адаптировать для ваших целей

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 02 июн 2014, 07:20
Alex_mk
Я недавно работаю с ГИС и как писать функции и адаптировать ту, на которую вы мне дали ссылку пока не знаю. Посоветуйте что почитать для этого.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 02 июн 2014, 07:27
trir
Книжки по SQL, но тут важно - какая СУБД, потому что:
Процедурные расширения

Поскольку SQL не является привычным процедурным языком программирования (то есть не предоставляет средств для построения циклов, ветвлений и т. д.), вводимые разными производителями расширения касались в первую очередь процедурных расширений. Это хранимые процедуры (stored procedures) и процедурные языки-«надстройки». Практически в каждой СУБД применяется свой процедурный язык, в частности, в Oracle Database используется PL/SQL (поддерживается также в DB2 и Timesten[en]), в Interbase и Firebird — PSQL, в DB2 — SQL PL[en], в Microsoft SQL Server и Adaptive Server Enterprise — Transact-SQL, в PostgreSQL — PL/pgSQL.
http://ru.wikipedia.org/wiki/SQL

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 08 июн 2014, 00:36
Boris
Ваша задача является стандартной задачей ГИС: поиск принадлежности по пространственной близости. Если эти слова вам ничего не говорят и вы не знаете как их приложить к вашей задаче, то начните с простого - сообщите нам какой инструментарий у вас уже есть и который вы в состоянии начать использовать.
Кроме того, одного поля может и не хватить, т.к. я не в состоянии угадать, какие именно у вас опоры, но я видел опоры "ветвления" - они принадлежат нескольким веткам. Так же в жизни видел и опоры разного напряжения, сверху одна линия, ниже - другая.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 13:07
Alex_mk
Boris писал(а):Ваша задача является стандартной задачей ГИС: поиск принадлежности по пространственной близости. Если эти слова вам ничего не говорят и вы не знаете как их приложить к вашей задаче, то начните с простого - сообщите нам какой инструментарий у вас уже есть и который вы в состоянии начать использовать.
Кроме того, одного поля может и не хватить, т.к. я не в состоянии угадать, какие именно у вас опоры, но я видел опоры "ветвления" - они принадлежат нескольким веткам. Так же в жизни видел и опоры разного напряжения, сверху одна линия, ниже - другая.
Не понял какой инструментарий вы имеете ввиду, уточните, пожалуйста. Одного поля не хватит, вы правы, поэтому хочу сделать несколько полей, в которых будут указаны соответствующие ID линий если на одной опоре проходят несколько этих линий. Но для моей задачи нужно хотя бы привязать опору к одной линии , тем более что опор, через которые проходит одновременно несколько линий, немного.

Если писать функцию, которая будет искать ближайшие опоры у линии и привязывать их, то в каком направлении мне нужно двигаться, с чего начать?
Используется MySQL и QGIS, пример БД во вложении

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 13:30
lam
Александр Сергеевич, думаю данного примера БД не достаточно, чтобы попытаться решить вашу задачу. Не увидел в вашем примере координат для линий.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 13:54
Alex_mk
lam писал(а):Александр Сергеевич, думаю данного примера БД не достаточно, чтобы попытаться решить вашу задачу. Не увидел в вашем примере координат для линий.
Скопировал из QGIS другие данные

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 14:00
lam
Выложите фрагмент шейп-слоев опор и линий в том месте, где несколько линий проходят через одну опору.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 14:23
Alex_mk
lam писал(а):Выложите фрагмент шейп-слоев опор и линий в том месте, где несколько линий проходят через одну опору.
Архив во вложении

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 14:33
lam
Линии строились по этим точкам опор, если да, то почему узлы не совпадают (см.вложение)?

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 14:42
Alex_mk
Точки не совпадают, т.к. потом вручную они перемещались, но этим уже не я занимался.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 14:58
lam
Я бы присвоил названия опорам по принципу ближайшего расположения линии к опоре.

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 14:59
Alex_mk
lam писал(а):Я бы присвоил названия опорам по принципу ближайшего расположения линии к опоре.
я бы тоже, но вбивать ручками больше 100 тысяч опор не хочется

Re: QGIS привязать опоры к линиям в SQL

Добавлено: 09 июл 2014, 15:05
lam
Alex_mk писал(а):
lam писал(а):Я бы присвоил названия опорам по принципу ближайшего расположения линии к опоре.
я бы тоже, но вбивать ручками больше 100 тысяч опор не хочется
зачем же ручками, инструмент Spatial Join в ArcGis, например.