Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » [решено] Оптимальное решение для привязки координат к географическим объектам на MS SQL Server

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

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день.

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

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

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

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

Спасибо.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 16:04, 31-05-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:09, 01-06-2013 | #11



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

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


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png 2.PNG
(24.4 Kb, 6 просмотров)

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

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

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

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

Спасибо.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 01:38, 02-06-2013 | #12


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


LilLoco, скажи, а измерение до 4ого порядка, это сколько в метрах?

Отправлено: 09:13, 02-06-2013 | #13


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


lxa85, я думаю порядка 4-5 метров. Это в московской области по широте.

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

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 13:54, 02-06-2013 | #14


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Цитата LilLoco:
P.S. Чтобы немного уменьшить объем таблицы Geo, »
Не для того, чтобы уменьшить объём, а для того, чтобы нормализовать базу.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:07, 03-06-2013 | #15


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Iska, ну то есть, ход мыслей у меня более менее правильный?

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 09:32, 03-06-2013 | #16


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 10:12, 03-06-2013 | #17


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


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

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

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

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

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

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

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

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 11:24, 03-06-2013 | #18


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

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

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

Отправлено: 11:34, 03-06-2013 | #19


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


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

Отправлено: 12:31, 03-06-2013 | #20



Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » [решено] Оптимальное решение для привязки координат к географическим объектам на MS SQL Server

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Обновление SP4 для внутренней базы MS SQL Server 2005 (kb2463332) El Scorpio Windows Server 2008/2008 R2 1 05-03-2017 02:24
MSFT SQL Server - Есть ли способ перейти с MS SQL 2005 на MS SQL 2000 elec Программирование и базы данных 10 18-04-2013 12:35
2008 R2 - Оптимальное решение для перемещения пользователя Ruldik Windows Server 2008/2008 R2 9 28-09-2012 16:52
Использование - MS SQL server cal 2005 для доступа к SQL SRV 2008 xaustov Лицензирование продуктов Microsoft 1 20-01-2012 17:55
Подбор - MS Win 2003 Server + MS SQL 2005 на кластер PetrK Лицензирование продуктов Microsoft 0 22-02-2008 14:12




 
Переход