OpenLayers и БД OSM на GIS-Lab'e
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
OpenLayers и БД OSM на GIS-Lab'e
Добрый день.
Возник вопрос. Возможно ли с удаленного сервера обращаться с SQL-запросами в БД ОСМ, расположенную на GIS-Labe? Интересует получение участников определенного типа релейшинов. Т.е. задачи получается такая: Посылка запроса на наличие релейшена с определенными тегами в определенной области, при получении положительного ответа, запрос участников этого релейшина находящихся в заданной области. Если такое возможно, ткните носом на описание таблиц БД и на примерчики извлечения из нее на php.
Возник вопрос. Возможно ли с удаленного сервера обращаться с SQL-запросами в БД ОСМ, расположенную на GIS-Labe? Интересует получение участников определенного типа релейшинов. Т.е. задачи получается такая: Посылка запроса на наличие релейшена с определенными тегами в определенной области, при получении положительного ответа, запрос участников этого релейшина находящихся в заданной области. Если такое возможно, ткните носом на описание таблиц БД и на примерчики извлечения из нее на php.
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Код: Выделить всё
$localhost="http://gis-lab.info:5432";
$bdname="osm";
$login="guest";
$passwod="guest";
Код: Выделить всё
<?php
include ("./inc/adris.inc");
$conn = mysql_connect ($localhost, $login, $passwod)
or die ("Соединение не установлено!<br>");
print ("Соединение установлено!<br>");
$bd_list=mysql_list_dbs($conn);
while($row=mysql_fetch_object($bd_list)) {
if ($row->Database=="osm")
{
echo ("<br><font color=red>".$row->Database."</font><br>\n");
$t_list=mysql_list_tables($row->Database);
for($i=0;$i<mysql_num_rows($t_list);$i++) {
echo " - <b>".mysql_tablename($t_list,$i)."</b><br>\n";
$fields=mysql_list_fields($row->Database, mysql_tablename($t_list,$i), $conn);
$colums=mysql_num_fields($fields); // число полей в таблице
// Далее распечатаем имена всех полей таблицы
for($j=0;$j<$colums;$j++) {
echo "<i>".mysql_field_name($fields,$j)."</i><BR>";
}} } }
mysql_close($conn);
?>
-
- Гуру
- Сообщения: 588
- Зарегистрирован: 30 мар 2009, 21:53
- Репутация: 55
- Откуда: Королев
Re: OpenLayers и БД OSM на GIS-Lab'e
На гис-лабе не Mysql, а Postgres, причем с PostGis. Меняйте драйвер для подключения (надеюсь на пхп уже есть такой )
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: OpenLayers и БД OSM на GIS-Lab'e
Я работаю с базой gis-lab.info. Пример кода:
Код: Выделить всё
<?php
// подключемся
$conn = pg_connect('host=gis-lab.info dbname=... user=... password=...');
if (!$conn) {
echo 'An error occured.\n';
exit;
}
// отправляем sql-запрос
$result = pg_query($conn, 'SELECT name, family FROM ...');
if (!$result) {
echo 'An error occured.\n';
exit;
}
// читаем последовательно все строки
while($row = pg_fetch_row($result)) {
print("name: $row[0], family: $row[1]");
}
// закрываем соединение
pg_close($conn);
?>
лангольеры под окном жрали время ом-ном-ном
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Подскажи, а есть ли аналог mysql_list_dbs() в PostgreSQL? Еще, у тебя есть список таблиц? Или где их можно посмотреть?Mavka писал(а):Я работаю с базой gis-lab.info.
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: OpenLayers и БД OSM на GIS-Lab'e
лангольеры под окном жрали время ом-ном-ном
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Поставил себе QGis, посмотрел таблички. Возник вопрос
$sql = "SELECT * FROM osm_rels WHERE 'tags' LIKE '%bus%';";
Что не так в запросе? Как правильно записать, чтобы искались строки, в которых в поле tags есть слово bus?
$sql = "SELECT * FROM osm_rels WHERE 'tags' LIKE '%bus%';";
Что не так в запросе? Как правильно записать, чтобы искались строки, в которых в поле tags есть слово bus?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers и БД OSM на GIS-Lab'e
Поле 'tags' - массив, поэтому ваш запрос не пройдёт. Я мало работал с массивами, но сходу пришло вот такое решение, попробуйте:
100 - максимальный размер массива, узнать можно, используя запрос:
Код: Выделить всё
SELECT * FROM osm_rels,generate_series(1,100) AS i WHERE tags[i] LIKE '%bus%';
Код: Выделить всё
SELECT max(array_dims(tags)) FROM osm_rels;
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Спасибо! Помогло.
Вопрос по БД osm_rels. Данные в эту таблицу попадают только из РФ и страны бывшего СССР. А есть ли подобные таблицы по всему миру? Ну или большей его части
Вопрос по БД osm_rels. Данные в эту таблицу попадают только из РФ и страны бывшего СССР. А есть ли подобные таблицы по всему миру? Ну или большей его части
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: OpenLayers и БД OSM на GIS-Lab'e
а кавычки на 'tags' так в запросе и написаны?Stud писал(а):Поставил себе QGis, посмотрел таблички. Возник вопрос
$sql = "SELECT * FROM osm_rels WHERE 'tags' LIKE '%bus%';";
Что не так в запросе? Как правильно записать, чтобы искались строки, в которых в поле tags есть слово bus?
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Вопрос по БД osm.
Имеется номерочек ноды. http://www.openstreetmap.org/browse/node/302350938
Можно ли узнать в каком регионе находится эта нода через БД?
Имеется номерочек ноды. http://www.openstreetmap.org/browse/node/302350938
Можно ли узнать в каком регионе находится эта нода через БД?
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Я по всякому пробовал. Дело было именно в том, что tags-массив.gamm писал(а):а кавычки на 'tags' так в запросе и написаны?Stud писал(а):Поставил себе QGis, посмотрел таблички. Возник вопрос
$sql = "SELECT * FROM osm_rels WHERE 'tags' LIKE '%bus%';";
Что не так в запросе? Как правильно записать, чтобы искались строки, в которых в поле tags есть слово bus?
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Кто-нибудь пробовал создавать файл осм динамически (например на пхп) и потом подгружать его в openlayers? может кто подскажет как это можно сделать? при этом передать в пхп координаты видимой части карты и уровень карты?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: OpenLayers и БД OSM на GIS-Lab'e
Это как, зачем и почему?создавать файл осм
лангольеры под окном жрали время ом-ном-ном
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 12 сен 2010, 06:16
- Репутация: 0
Re: OpenLayers и БД OSM на GIS-Lab'e
Хочу сделать отображение маршрутов общественного транспорта.Mavka писал(а):Это как, зачем и почему?создавать файл осм
Делать это при помощи допустем одного ОСМфайла тяжко, уж больно много весит.
Делать при помощи зарание орендинной карты(как на latlon.ru) тоже не хочется, т.к. опять все упирается в место.
Да и первые два варианта неинтересны (хотя если кто поможет и объяснит со вторым, буду благодарен). Вот по этому и хочу сделать динамический ОСМ-файлик.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 23 гостя