Задавайте вопросы, мы ответим
Вы не зашли.
федя написал:
Ну да если имется задача автоматически определить, что к нам зашла единственная жительница Камеруна говорящая на языке БИКЬЯ, то и 40 знаков после запятой не хватит
Фёдор, вы не внимательно прочитали мой ответ, ваши шутки стреляют мимо, так как вы не о том шутите.
Неактивен
animegirl написал:
Фёдор, вы не внимательно прочитали мой ответ, ваши шутки стреляют мимо, так как вы не о том шутите.
Зря обижаетесь
Если у вас виртуальная задача для "математического факультета университета", то можно и до 8 знака долготу учитывать, если это задача из реального мира, то вам придется столкнутся с таким понятием как точность планов местности и наукой с названием метрология (точность измерения).
Просто я лет пять-восемь назад занимался разработкой систем которые "отображают планы местности"...
И "пытался" загрузить данные из пространственной БД в реляционную, если точнее то в mysql.
Так вот ... Все гео-данные которые вы получите из открытых источников будут имееть точность в очень широком пределе.
Из за "реперов", из-за того что "планы местности" определенной точности запрещены в РФ, из-за еще много чего...
Можете мне сказать как в вашей БД выглядит результат такого запроса:
Кол-во "region_id" для "country_id" равного Россия ?
При точности 8 знаков, (0-3 метра, в зависимости от близости к полюсу) только для описания границы между РФ и Китаем вам потребуется внести
4200 км/1 метр = 4 млн записей в таблицу регионов...
Понятное дело, что часть границы описывается в виде "идет по такой то широте", и вашей таблице будет записан один большой прямоугольник.
Но другая часть описана вот так- "по берегам реки АМУР".
А река амур совершено не желает плыть паралельно широте/долготе.
ps.
Ну да ладно, тут тема оптимизация mysql, поэтому предложу Вам на рассмотрение другой вариант:
Пользователь перемещается по карте и регулярно передает новую координату 25.111, 25.112, ....
select * from (select * from region where X>25 and X<26) where X>25.1111111 and X < 25.1211111
select * from (select * from region where X>25 and X<26) where X>25.1121111 and X < 25.1311111
select * from (select * from region where X>25 and X<26) where X>25.1131111 and X < 25.1411111
select * from (select * from region where X>25 and X<26) where X>25.1141111 and X < 25.1511111
Те внутрении select всегда с округленными даннными и будет закэширован.
Неактивен
федя написал:
Можете мне сказать как в вашей БД выглядит результат такого запроса:
Кол-во "region_id" для "country_id" равного Россия ?
Неактивен
федя написал:
При точности 8 знаков, (0-3 метра, в зависимости от близости к полюсу) только для описания границы между РФ и Китаем вам потребуется внести
4200 км/1 метр = 4 млн записей в таблицу регионов...
Я пошла более простым путём. Мне нужны только 4 точки )
У меня нету цели вымерять миллиметры на границах, мне нужна точность в позиции точек, а не в рамках границ.
Неактивен
федя написал:
Ну да ладно, тут тема оптимизация mysql, поэтому предложу Вам на рассмотрение другой вариант:
Пользователь перемещается по карте и регулярно передает новую координату 25.111, 25.112, ....
select * from (select * from region where X>25 and X<26) where X>25.1111111 and X < 25.1211111
select * from (select * from region where X>25 and X<26) where X>25.1121111 and X < 25.1311111
select * from (select * from region where X>25 and X<26) where X>25.1131111 and X < 25.1411111
select * from (select * from region where X>25 and X<26) where X>25.1141111 and X < 25.1511111
Те внутрении select всегда с округленными даннными и будет закэширован.
Интересная мысль, надо подумать.
Но смотрите, если взять в пример мегаполюсы, туже Москву, таким запросом там будет 5М строк, это не перебор ли?
В том плане, что 5М строк, это сколько 3-5ГБ данных будет, это постоянно держать в кэше, а если оно не в кэше, то выбирать, база не повесится от такого?
Неактивен
И да, можно поточнее, про запрет на Геоданные в РФ если можно?
Неактивен
федя написал:
Ну да ладно, тут тема оптимизация mysql, поэтому предложу Вам на рассмотрение другой вариант:
Пользователь перемещается по карте и регулярно передает новую координату 25.111, 25.112, ....
select * from (select * from region where X>25 and X<26) where X>25.1111111 and X < 25.1211111
select * from (select * from region where X>25 and X<26) where X>25.1121111 and X < 25.1311111
select * from (select * from region where X>25 and X<26) where X>25.1131111 and X < 25.1411111
select * from (select * from region where X>25 and X<26) where X>25.1141111 and X < 25.1511111
Те внутрении select всегда с округленными даннными и будет закэширован.
В кэш запросов MySQL всегда попадает результат выполнения запроса целиком, результаты выполнения подзапросов не кэшируются.
Хорошое описание кэширования запросов в MySQL
Неактивен
О сравнении производительности между enum и varchar - http://www.mysqlperformanceblog.com/200 … is-faster/
Причем в тестовых данных замена varchar на enum серьезно сокращала длину строки, и то разница оказалась невелика.
Кроме того у enum есть проблема с добавлением/изменением определения поля. Это делается только через alter table и, не смотря на то, что реально данные не затрагиваются - создание копии исходной таблицы,... Хотя в последних версиях вроде как поправили эту фичу (или мне только так кажется).
Относительно горы бесполезных if замечание верное, но тут неясно зачем они вообще нужны. Если исходя из каких-то настроек пользователя ему нужна определенная сортировка результата, то можно добавить order by field()
Недостаток этой конструкции в том, что у нас будет filesort. И если приоритет языков всегда один и тот же и запрос позволяет при сортировке использовать индексное поле, то можно сделать enum, в котором на первых местах указать приоритетные языки (ru,en,fr, все остальные), чтобы избавиться от filesort.
Но здесь не тот случай, так как главной таблицей в объединении скорее всего будет вторая с отбором по координатам.
Неактивен
Во первый да, двигаемся от координат.
Во вторых первый язык, там написано ur, это я оставила как заглушку,а вообще там будет язык юзера.
Неактивен
animegirl написал:
И да, можно поточнее, про запрет на Геоданные в РФ если можно?
Это обширная тема
Если кратко, то
- никогда нельзя писать "карта" надо писать "эскиз местности" или "план местности"
- планы местности до определенного масштаба считаются секретными
- нельзя рисовать долготу/широту - так как после этого план местности автоматически становится картой
- ни в коем случае нельзя указывать высоту над уровнем моря, чтобы "ракеты" к нам вражеские не могли на низкой высоте прилететь
- есть "районы страны" которые нельзя детализировать более чем "серым квадратом" с подписью промышленная территория
Неактивен
А как тогда работают яндекс мапс гугле мапс и прочие?
Неактивен
animegirl написал:
А как тогда работают яндекс мапс гугле мапс и прочие?
А вот так вот:
http://legal.yandex.ru/maps_mobile_agreement/
5.8. Программа предоставляет Пользователю возможность использования дополнительной функции — слоя «Народная карта». Пользователь настоящим уведомлен, понимает и соглашается, что полученная в составе данного слоя схема, основанная на пользовательской информации сервиса «Яндекс.Народная карта», не является картографическим произведением в смысле Федерального закона от 26.12.1995 № 209-ФЗ «О геодезии и картографии». Правообладатель не гарантирует геометрическую точность и соблюдение картографической проекции схемы.
Неактивен
федя написал:
animegirl написал:
А как тогда работают яндекс мапс гугле мапс и прочие?
А вот так вот:
это про народную карту, которую составляют сами пользователи Яндекса. Яндекс разумно предупреждает, что данные рисунки пользователей картой не являются, т.к. пользователи, как и в википедии, могут нарисовать что угодно. Вас спрашивают как работают карты самого яндекса, гугла и т.п.
Приведите пожалуйста пруфлинк на те запреты о которых вы пишете, особенно насчет запрета на слово карта и "эскиз местности"
Неактивен
Shopen написал:
федя написал:
animegirl написал:
А как тогда работают яндекс мапс гугле мапс и прочие?
А вот так вот:
это про народную карту, которую составляют сами пользователи Яндекса. Яндекс разумно предупреждает, что данные рисунки пользователей картой не являются, т.к. пользователи, как и в википедии, могут нарисовать что угодно. Вас спрашивают как работают карты самого яндекса, гугла и т.п.
Приведите пожалуйста пруфлинк на те запреты о которых вы пишете, особенно насчет запрета на слово карта и "эскиз местности"
a) пруфлинк = 209-ФЗ ... Вам никто не запрещает использовать слово "карта", только лицензию получите и можете писать КАРТА. А если получили лицензию и делаете карты, то будьте добры по первому требованию передавать карты в "реестр" и еще много чего... почитайте закон...
Именно поэтому:
http://api.yandex.ru/maps/solutions/?p=about
ВИДИМ:
.... это сотни подробных схем городов, карта мира, спутниковые снимки планеты и Народная карта.
СХЕМЫ городов !!!! - понятно ?
http://law.2gis.ru/copyright/
ВИДИМ:
цифровой ПЛАН !!!! - понятно ?
б) все что написано выше знаю из "первых рук"
в) я и так много лишнего сказал, вот тут есть "разбор терминов":
http://web-gis.org/tag/%d0%bd%d0%b0%d1% … %81%d0%b0/
Отредактированно федя (21.11.2012 18:49:07)
Неактивен
В общем читайте... читайте... читайте...
http://www.bestpravo.ru/rossijskoje/ad- … ty/m8w.htm
http://gis-lab.info/docs/legislation.html
4. Объекты местности (элементы содержания) топографических карт и планов, не включенные в Перечень, разрешаются к показу на топографических картах и планах при условии обеспечения их планового положения не точнее, чем на топографической карте масштаба 1:100000 в государственных системах координат и изображения рельефа местности горизонталями с высотой сечения 20 метров и более.
5. Топографические карты масштаба 1:500000, 1:1000000 могут быть открыто опубликованы без ограничений.
Карты масштаба 1:200000 и крупнее должны иметь произвольную разграфку, отличную от государственной.
II. Объекты местности и элементы содержания топографических карт и планов, запрещенные для открытого опубликования:
12. Характеристики объектов местности:
специализация промышленных объектов (могут сопровождаться подписью "промзона"),
ps.
Sorry за оффтопик не в тему сайта...
Неактивен
И тем не менее Яндекс.Карты и "2ГИС — бесплатный справочник организаций с картой города" (http://www.2gis.ru/). И заметьте я это пишу без кучи восклицательных знаков, хотя цитаты с тех же адресов. Просто вы выдернули то, что вам больше нравится. Не придумывайте лишнего. Animegirl напишет, что не занимается картографической деятельностью, всё as-is и на этом все ее потенциальные, описанные вами проблемы с ее картами закончатся.
И вообще может она игру пишет.
P.S. думаю хватит оффтопить
Неактивен
У дубльгиса есть (была) лицензия (ФСГиК номер ЗСГ00107)
ps.
я тоже скоро научусь выделять bold-ом и буду писать по принятым на этом форуме правилам..
Неактивен
если есть лицензия, то почему "цифровой ПЛАН !!!! - понятно ?"
Неактивен
vasya написал:
О сравнении производительности между enum и varchar - http://www.mysqlperformanceblog.com/200 … is-faster/
Причем в тестовых данных замена varchar на enum серьезно сокращала длину строки, и то разница оказалась невелика.
Почитываю я иногда этого уважаемого автора, но люблю проверять сам... Особенно не на пустой инсталяции, а на каком-нить загруженном продакшене
В общем вот тут я решил провести эксперимент:
http://sqlinfo.ru/forum/viewtopic.php?id=6259
ps.
А тописквотеру хочу посоветовать все же в БД пространственную залить...
В 10 раз быстрее будет....
Правда я так и не понял, если вся РФ это 83 прямоугольника, то откуда миллионы записей...
Неактивен
1. Мир на РФ не заканчивается
2. Мир это не только Регионы, это ещё и города
3. В мире говорят не только на 1 языке
х. Перемножьте
Неактивен