Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 14 май 2009, 16:45
Я создал следующий шаблон для запроса
Код: Выделить всё
<tr>
<td>[lrn]</td>
<td>[НАЗВАНИЕ]</td>
<td>[ГОД]</td>
<td>[ОПИСАНИЕ]</td>
</tr>
В map-файле прописал
Код: Выделить всё
LAYER
NAME churches
DATA churches
STATUS ON
TYPE POLYGON
LABELITEM "НАЗВАНИЕ"
CLASSITEM "ТИП"
TOLERANCE 5000
HEADER './templates/churches_head.html'
FOOTER './templates/churches_footer.html'
TEMPLATE './templates/churches_query.html'
CLASS
NAME "Монастырь"
TEMPLATE './templates/churches_query.html'
EXPRESSION '1'
STYLE
OUTLINECOLOR 197 122 78
END
LABEL
COLOR 0 0 0
SHADOWCOLOR 10 10 10
SHADOWSIZE 0 0
TYPE TRUETYPE
FONT arial
SIZE 10
ENCODING CP1251
ANTIALIAS TRUE
ANGLE AUTO
END
END
В шаблоне для отображения карты прописал
Код: Выделить всё
<select name="mode">
<option value="browse">Обзор</option>
<option value="map">Карта</option>
<option value="query" [query_select]>Запрос информации об 1 объекте</option>
<option value="nquery" [nquery_select]>Запрос информации о неск. объектах</option>
</select>
Но когда я выбираю режим запроса и щелкаю на объекте, у меня просто обноаляется карта. Почему?
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 15 май 2009, 18:36
Вообще-то я все делал как описано в руководстве по MapServer на этом сайте.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 19 май 2009, 16:18
Оказывается, у меня формируется вот такая ссылка
Код: Выделить всё
http://localhost/cgi-bin/mapserv.exe?map=%2Fms4w%2Fapps%2Fmurom%2Fmurom.map&imgext=1775.444339+-4717.014436+9521.180061+1089.863783&imgxy=400.0+300.0&layer=museums&layer=streets&layer=banks&layer=restaurants&layer=churches&layer=tradecenters&layer=parks&layer=hotels&mode=browse&mode=map&mode=query&mode=nquery&mode=browse&submit=%CE%E1%ED%EE%E2%E8%F2%FC&zoom=2
т.е. переменная mode принимает несколько значений. Как такое может быть?
-
wmk
- Активный участник
- Сообщения: 102
- Зарегистрирован: 11 янв 2009, 17:38
- Репутация: 0
- Откуда: Казань
-
Контактная информация:
Сообщение
wmk » 20 май 2009, 10:16
http://localhost/cgi-bin/mapserv.exe
?map=%2Fms4w%2Fapps%2Fmurom%2Fmurom.map
&imgext=1775.444339+-4717.014436+9521.180061+1089.863783
&imgxy=400.0+300.0
&layer=museums
&layer=streets
&layer=banks
&layer=restaurants
&layer=churches
&layer=tradecenters
&layer=parks
&layer=hotels
&mode=browse
&mode=map
&mode=query
&mode=nquery
&mode=browse
&submit=%CE%E1%ED%EE%E2%E8%F2%FC
&zoom=2
Но это же получается что он запрашивает
layer=hotels
mode=browse
По идее запрос слоев должен быть таким
LAYERS=podlogka_kazan,water,streets,kazan_merged
А
mode должен быть один и кстати у тебя карта какая ??? (wms, wfs)
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 20 май 2009, 14:56
Обычные шейпфайлы. Мож в шаблоне че не так
Код: Выделить всё
<html>
<head>
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<TITLE>Туристическая карта Мурома</TITLE>
<link rel="stylesheet" type="text/css" href="style.css" title="Stylesheet">
<STYLE>
#mainmenu {
border-color: #000000;
color:black;
text-decoration:underline;
font-size: 12px;
}
body {
background-color: #FFFFCC;
}
</STYLE>
</head>
<body>
<TABLE width=100% bgcolor="#4169E1">
<TR bgcolor = "#4169E1">
<TD><IMG src="logo.gif" height=160 width=100%></TD>
<TD><H3><P ALIGN=right><FONT COLOR="FFFAFA">Туристическая<BR>карта<BR>Мурома</FONT></P></H3>
</TD>
</TR>
</TABLE>
<TABLE width=100% bgcolor="#CCCCCC">
<TR>
<TD width="40%">
<div align="center"><A HREF="index.html" id="mainmenu">Главная</A>
</div></TD>
<TD width="19%">
<div align="center"><A HREF="searchobject.html" id="mainmenu">Поиск объекта</A>
</div></TD>
<TD width="41%">
<div align="center"><A HREF="searchroute.html" id="mainmenu">Поиск маршрута</A>
</div></TD>
</TR>
</TABLE>
<div>
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe">
<!-- Скрытые CGI переменные -->
<input type="hidden" name="map" value="[map]">
<input type="hidden" name="imgext" value="[mapext]">
<input type="hidden" name="imgxy" value="[center]">
<table align="center" width="410" border="1">
<tr>
<td bgcolor="#ffcc66">
<input type="checkbox" name="layer" value="museums" [museums_check]>Музеи<br>
<input type="checkbox" enabled="false" name="layer" value="streets" [streets_check]>Улицы<br>
<input type="checkbox" name="layer" value="banks" [banks_check]>Финансовые учреждения<br>
<input type="checkbox" name="layer" value="restaurants" [restaurants_check]>Кафе, бары, рестораны<br>
<input type="checkbox" name="layer" value="churches" [churches_check]>Храмы<br>
<input type="checkbox" name="layer" value="tradecenters" [tradecenters_check]>Торговые центры<br>
<input type="checkbox" name="layer" value="parks" [parks_check]>Парки<br>
<input type="checkbox" name="layer" value="hotels" [hotels_check]>Гостиницы<br>
<input type="checkbox" name="layer" value="squares" [squares_check]>Площади<br>
<input type="checkbox" name="layer" value="hospitals" [hospitals_check]>Медицинские учреждения<br>
</td>
<input type="hidden" name="mode" value="browse">
<input type="hidden" name="mode" value="map">
<input type="hidden" name="mode" value="query">
<input type="hidden" name="mode" value="nquery">
<td>
<table width="400" border="1">
<tr>
<td>
<!-- SPECIFY MAP MODE -->
<div align="center">Режим карты:<br>
<select name="mode">
<option value="browse" [browse_select]>
Просмотр </option>
<option value="query" [query_select]>
Запрос информации об 1 объекте</option>
<option value="nquery" [nquery_select]>
Запрос информации о неск. объектах</option>
</select>
</div>
</td>
<td>
<!-- FORM SUBMIT BUTTON -->
<div align="center">
<input type="submit" name="submit" value="Обновить">
</div>
</td>
<td>
<!-- ZOOM/PAN CONTROLS -->
<div align="center">Карта: <br>
<select name="zoom">
<option value="4" [zoom_4_select]>4x увеличение</option>
<option value="3" [zoom_3_select]>3x увеличение</option>
<option value="2" [zoom_2_select]>2x увеличение</option>
<option value="1" [zoom_1_select]>Центрирование</option>
<option value="-2" [zoom_-2_select]>2x уменьшение</option>
<option value="-3" [zoom_-3_select]>3x уменьшение</option>
<option value="-4" [zoom_-4_select]>4x уменьшение</option>
</select>
</div>
</td>
</tr>
<tr>
<td colspan="3" align="center" valign="top">
<img src="[scalebar]">
<input type="image" name="img" src="[img]" width="600" height="450" border="0">
</td>
<td>
<p> Легенда:<br>
<img name="legend" src="[legend]"></p>
<p> Мини-карта:<br>
<input type="image" name="ref" src="[ref]" border=0><p>
</td>
</tr>
</table>
</form>
</div>
</table>
<BR>
<HR>
<CENTER><FONT COLOR="#CCCCCC" SIZE="2pt">Разработчик: Ястребов С.А. (гр.ИС-105)<BR> Муром 2009</FONT></CENTER>
</body>
</html>
Но ведь эта ссылка генерируется автоматически.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 20 май 2009, 20:37
Оказалось все дело вот в этом фрагменте кода
Код: Выделить всё
<input type="hidden" name="mode" value="browse">
<input type="hidden" name="mode" value="map">
<input type="hidden" name="mode" value="query">
<input type="hidden" name="mode" value="nquery">
Но теперь выдает ошибку msQueryByPoint(): Search returned no results. No matching record(s) found.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 20 май 2009, 21:19
Объясните, из каких соображений следует задавать параметр TOLERANCE?
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 23 май 2009, 17:51
Почему когда я щелкаю на одном объекте, у меня выводится информация о другом?
-
KolesovDmitry
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Сообщение
KolesovDmitry » 23 май 2009, 20:02
hawk1 писал(а):Объясните, из каких соображений следует задавать параметр TOLERANCE?
Если коротко, то этот параметр - радиус поиска вокруг места, где был сделан щелчек мышью. Т.е. если вы говорите
то вокруг того места, где вы щелкнули мышью очерчиваются круг радиусом 100 единиц и выбираются объекты (или первый попавшийся объект - в зависимости от запроса), лежащие в этом круге. Какой радиус выбрать и какие единицы использовать зависит от задачи. Посмотрите подробности в
документации, раздел Tolerance.
hawk1 писал(а):Почему когда я щелкаю на одном объекте, у меня выводится информация о другом?
Скорее всего, у вас запрос на выборку одного объекта, вот вы и получаете только один из N объектов, попавших в круг вашего радиуса.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 24 май 2009, 12:12
При крупном масштабе все более менее работает, а вот при мелком выдает сообщение msQueryByPoint(): Search returned no results. No matching record(s) found даже для таких крупных объектов, как парки.
-
KolesovDmitry
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Сообщение
KolesovDmitry » 24 май 2009, 19:03
hawk1 писал(а):При крупном масштабе все более менее работает, а вот при мелком выдает сообщение msQueryByPoint(): Search returned no results. No matching record(s) found даже для таких крупных объектов, как парки.
Скорее всего в заданной точке (в выбранным радиусом поиска) не находится ни одного объекта. В этом случае, можно показать пользователю специальную страницу, на которой можете написать, что-то вроде "объектов не найдено". Адрес этой страницы указвается в разделе WEB при помощи ключевого слова EMPTY:
Есть второй вариант, при котором возникает эта ошибка: вы точно знаете, что в этой точке есть объект. Тогда ваш случай описан
в документации и означает, что вы попросту не настроили шаблоны для возвращения результатов.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 24 май 2009, 21:16
Шаблоны у меня заданы для всех слоев кроме улиц.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 25 май 2009, 20:00
Не могу понять, каким же установить TOLERANCE, чтобы при щелчке по объекту пользователь гарантированно получал информацию именно об этом объекте.
-
hawk1
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 28 фев 2009, 17:30
- Репутация: 0
Сообщение
hawk1 » 26 май 2009, 17:41
А не используется ли при запросах какое либо смещение? Просто мне кажется, что результат возвращается для точки, смещенной на некоторое расстояние, относительно той, по которой на самом деле был произведен щелчок.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость