PDA

Показать полную графическую версию : [решено] Оптимальное решение для привязки координат к географическим объектам на MS SQL Server


Страниц : [1] 2

LilLoco
31-05-2013, 16:04
Добрый день.

В организации проводятся некоторые измерения по различным районам. К данным по измерениям привязываются координаты с GPS. Данные агрегируются по долготам/широтам (с точностью до 4го знака) и храняться в таблицах на SQL Server. Далее для ведения статистики (отчетности) необходимо разбивать все позиции на различные группы (н-р, районы, округа, города, поселки, основные трассы). И тут встает вопрос, каким способом производить такое разбиение?

Изначально, когда разбивалось только на районы, алгоритм был такой:
в таблице на сервере создавались географические полигоны, и принадлежавшие полиганам позиции помечались идентификатором района.
Данных по измерениям очень большое количество, и поэтому такой способ занимал длительное время обработки.
Более того, так как сейчас необходимо разбиение на большее количество групп, очень сложно будет создать такие полигоны на сервере, и время обработки увеличится. (Изначально было всего 30-35 районов.)

На данный момент была мысль создать таблицу, содержащую весь список возможных координат (с шагом 0.0001) и привязать к каждой позиции информацию о принадлежности к группе. Записей в таблице получается около 1500000000, поэтому теперь сомневаюсь, что такой способ является "хорошим".

Подскажите, как реализовать такую задачу.
Буду рад любой информации.

Спасибо.

freese
31-05-2013, 17:53
я немного далек от sql, но пять копеек вставлю (-
На данный момент была мысль создать таблицу, содержащую весь список возможных координат (с шагом 0.0001) и привязать к каждой позиции информацию о принадлежности к группе. »
да, создать список, но к каждой позиции только данные измерений. Отдельно районы, округа и т.д. с указаниием диапазонов координат из таблицы

LilLoco
31-05-2013, 19:48
freese, спасибо.

Можно немного поподробнее. Не совсем понял, ваше представление - структуры всего этого.
Я думал что - то наподобие (см. вложение).

Ну и соответственно, ко всем необходимым таблицам по измерениям добавлять столбец PosId, которая берется из Position по совпадения Longitude, Latitude.

Iska
31-05-2013, 21:12
LilLoco, что за группы 1…N?

LilLoco
01-06-2013, 00:11
Iska, как бы уровни вложенности. Например: 1 группа- Москва, московская область; 2 группа - цао, вао, Ногинский район, Шатурский район; 3 группа - деревни, поселки; ну и так далее... То есть каждая группа будет отвечать за определенное разбиение на уровни.

Iska
01-06-2013, 02:16
LilLoco, с точки зрения теории это явно избыточно. Необходимо и достаточно держать в таблице только нижний уровень.

Мне не очень алгоритм понятен. Полигоны — это что суть, физически?

Tau_0
01-06-2013, 04:45
Полигоны — это что суть, физически? »
По всему, --- нечто подобное:
Полигонометрия

http://ru.wikipedia.org/wiki/Полигонометрия
ЗЫ Раньше узлами сетки служили тригопункты, а теперь ко всему можно привязаться...

Iska
01-06-2013, 06:20
http://ru.wikipedia.org/wiki/Полигонометр »
В Википедии нет статьи с таким названием.
Поправьте ссылку.

Хотелось бы услышать автора темы.

Tau_0
01-06-2013, 09:53
Поправьте ссылку. »
Исправил...

LilLoco
01-06-2013, 14:04
Полигоны — это что суть, физически?
географическая область. Н-р, Ногинский район.

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

Iska
01-06-2013, 23:09
географическая область. Н-р, Ногинский район. »
Я, наверное, перемудрил с вопросом. Имелось в виду, что набор записей с единым значением «Группа N» суть последовательность координат, дающих при последовательном соединении полигон, «накрывающий» замкнутую область, обозначающую физическую площадь «Группы N»? Я просто действительно пока не очень понимаю.

LilLoco
02-06-2013, 01:38
последовательность координат, дающих при последовательном соединении полигон, «накрывающий» замкнутую область, обозначающую физическую площадь «Группы N»? »
Нет, имелось ввиду Группа - это группы, на которые необходимо разбить снятые измерения, такие как подразделения, города, районы, деревни и т.д..

Для наглядности, прикладываю картинку.
Есть 4 группы - таблицы, на которые мы делим данные (Podrazd - подразделения, Oblast - области, Region - районы, City - города). Есть таблица Geo, которая содержит список всех возможных координат, где мы можем снимать измерения, с шагом 0.0001. Таких записей получается порядка 2 миллиардов.

Далее к таблицам измерений присоединять колонку PosId, которая будет идентификатором принадлежности измерения к "группе разбиения". Идея лезет в голову только такая пока что.

P.S. Чтобы немного уменьшить объем таблицы Geo, вложенность можно определять не в ней, а в таблицах-группах. Т.е. в таблице Oblast создать колонку Podrazd.podrazdid, в Region - Oblast.OblastId и так далее. Но это на данный момент не так сильно волнует. Основным вопросом для меня является правильно ли я мыслю, или этот вариант лучше вообще не использовать?

Спасибо.

lxa85
02-06-2013, 09:13
LilLoco, скажи, а измерение до 4ого порядка, это сколько в метрах?

LilLoco
02-06-2013, 13:54
lxa85, я думаю порядка 4-5 метров. Это в московской области по широте.

Я думал о том, чтобы хранить координаты с шагом не 0.0001, а 0.001. Думаю погрешность будет невелика.

Iska
03-06-2013, 03:07
А как тогда определять уровни вложенности? Н-р, г.Электросталь. Предположим, что это нижний уровень. Выше идут: Ногинский район, московская область, обслуживающее подразделение... »
Отдельные таблицы, связанные отношениями один-ко-многим.

P.S. Чтобы немного уменьшить объем таблицы Geo, »
Не для того, чтобы уменьшить объём, а для того, чтобы нормализовать базу.

LilLoco
03-06-2013, 09:32
Iska, ну то есть, ход мыслей у меня более менее правильный?

Iska
03-06-2013, 10:12
LilLoco, в части проциированного мною в предыдущем посте — да. По остальному сказать не могу, поскольку для меня так и осталась непонятной предметная область целиком. В частности, непонятно Ваше решение с «создать таблицу, содержащую весь список возможных координат».

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

LilLoco
03-06-2013, 11:24
непонятно Ваше решение с «создать таблицу, содержащую весь список возможных координат». »
Другого на данный момент я не придумал. Поэтому прошу помощи.

наиболее подробным образом »
Есть некая организация. Организация проводит тесты в различных местах, будь то города, села, деревни, шоссе, парки. Тесты проводятся как на автомобиле, так и пешком.

С оборудования снимаются файлы с данными, которые вносятся в базу данных SQL Server. По полученным данным, формируются таблицы (Измерения) для ведения статистики вида: id, longitude, latitude, столбцы с измерениями.
То есть, для каждой точки проезда/прохода, существует ряд измерений. Точка имеет свои координаты долготы/широты.

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

Для этого нам необходимо связать координаты из полученной таблицы (Измерения) с реальными географическими объектами.

Для этого и было предположение создать таблицу со всеми возможными координатами, в которой будет содержаться географическая информация по этим координатам. После чего сводить координаты из этой таблицы с координатами из таблицы (Измерения), тем самым получая измерения для определенных географических объектов.

Вот в принципе и вся задача.

Iska
03-06-2013, 11:34
С оборудования снимаются файлы с данными, которые вносятся в базу данных SQL Server. По полученным данным, формируются таблицы (Измерения) для ведения статистики вида: id, longitude, latitude, столбцы с измерениями.
То есть, для каждой точки проезда/прохода, существует ряд измерений. Точка имеет свои координаты долготы/широты. »
Примерно ясно.

Есть задача, чтобы можно было просмотреть статистику лишь для определенных мест, например, только на шоссе, либо только в деревнях. »
Понятно.

Для этого нам необходимо связать координаты из полученной таблицы (Измерения) с реальными географическими объектами. »
Откуда будут браться координаты реальных географических объектов? Какая-то база? Как именно они (координаты) из этой гипотетической базы определяют область объекта (накрытие)? Это как-то связано с упомянутыми полигонами?

lxa85
03-06-2013, 12:31
Дополню Iska и разовью свою мысль. Допустим идет процесс пешей и автомобильной гамма съемки. Автомобиль, равно как и человек ходит по дорогам,иногд по лесам,полям,болотам. Вам доступны только его координаты,без описания окружения. Iska поднимает вопрос топопривязки полученных координат к реальной местности. С приборов можно получить трассу маршрута(удобно в плане дорог). Но для практического использования необходимо привязать полученные значения к карте. Возможно для вас целесообразние будет получить картографические сведения из специальных баз(если разработка официальная и поддерживается руководством) возможно они подскажут свое API для работы с картами.




© OSzone.net 2001-2012