Реализация определяющей выборки в Mapserver
Добавлено: 24 фев 2008, 02:38
Обсуждение статьи "Реализация определяющей выборки в Mapserver"
http://gis-lab.info/qa/mapserver-query.html
http://gis-lab.info/qa/mapserver-query.html
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
https://gis-lab.info/forum/
Код: Выделить всё
<script language="JavaScript" type="text/javascript">
<!--
function create_query() {
nam=form.nam.value;
sex=form.sex.value;
query="('[Name]' == '"+nam+"')";
query1="('[Pol]' == '"+sex+"')";
if (query !="" && query1 ="") {
query="("+query+")"
form.qitem.value="Name";
form.qlayer.value="prostokarta";
else
query="("+query+")"
query1="("+query1+")"
form.qitem.value="Name";
form.qitem.value="Pol";
form.qlayer.value="prostokarta";
};
}
function on_submit_form(){
create_query(document.mapserv);
document.mapserv.mode.value="itemnquery"
document.mapserv.target = "_self";
document.mapserv.submit();
}
//-->
</script>
<html>
<head>
<title>Laot</title>
</head>
<body bgcolor="#CCCFFF" charset="windows-1251">
<table width="840" height="100" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="120" height="50">
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe">
<td width="120" height="50">
<text><b>Название животного</b></text><br>
<input type="hidden" name="map" value="[map]">
<select name ="nam" size=1>
<option selected></option>
<option value='Волк'>Волк</option>
<option value='Заяц'>Заяц</option>
<option value='Лиса'>Лиса</option>
</select>
<select name ="sex" size=1>
<option selected></option>
<option value='Муж'>Муж</option>
<option value='Жен'>Жен</option>
</select>
<input type="hidden" name="layer" value="prostokarta_region">
<input type="hidden" name="layer" value="base">
<input type="hidden" name="qitem" value="">
<input type="hidden" name="qlayer" value="">
<input type="hidden" name="qstring" value="">
<input type="hidden" name="layer" value="prostokarta">
<input type="hidden" name="mode" value="browse">
<a href="javascript:on_submit_form()">QUERY</a>
</form>
</td>
</tr>
</table>
</td>
<td width="680" height="612">
<div align="center">
<input type="image" name="img" src="[img]" width="680" height="612">
</div>
</td>
</tr>
</table>
</body>
</html>
Код: Выделить всё
MAP
IMAGETYPE GIF
EXTENT -0.384 -0.383 0.217 -0.245
SIZE 680 612
WEB
TEMPLATE "/ms4w/apps/mslocal/templates/index2.html"
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
END
QUERYMAP
STATUS ON
SIZE 680 612
STYLE SELECTED
END
LAYER
NAME "base"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM prostokarta_region USING SRID=4326"
TYPE POLYGON
CLASS
COLOR 125 234 100
OUTLINECOLOR 100 100 100
END
END
LAYER
NAME "prostokarta_region"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM
(
SELECT prostokarta_region.the_geom AS the_geom,
prostokarta_region.oid AS oid,
animals.name AS aname, animals.sex AS asex
from prostokarta_region, animals
where (animals.id=prostokarta_region.id) and (animals.name='%nam%') and (animals.sex='%sex%')
)
AS new_table USING SRID=4326"
TYPE POLYGON
CLASSITEM "aname"
METADATA
QSTRING_VALIDATION_PATTERN '.'
CLASS
NAME "Волк"
EXPRESSION 'Волк'
COLOR 100 100 100
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Заяц"
EXPRESSION 'Заяц'
COLOR 0 0 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Лиса"
EXPRESSION 'Лиса'
COLOR 255 255 0
OUTLINECOLOR 100 100 100
END
END
LAYER
NAME "prostokarta"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM
(
SELECT prostokarta_region.the_geom AS the_geom,
prostokarta_region.oid AS oid,
animals.name AS aname
from prostokarta_region, animals
where (animals.id=prostokarta_region.id) and (animals.name='%nam%')
)
AS new_table USING SRID=4326"
TYPE POLYGON
CLASSITEM "aname"
CLASS
NAME "Волк"
EXPRESSION 'Волк'
COLOR 100 100 100
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Заяц"
EXPRESSION 'Заяц'
COLOR 0 0 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Лиса"
EXPRESSION 'Лиса'
COLOR 255 255 0
OUTLINECOLOR 100 100 100
END
END
END
Код: Выделить всё
query="([NAME]=...) and ([POL]=...)" // выбрано сразу два select
query="([NAME]=...)" // выбран только один select
Код: Выделить всё
query= '(Name_of_Select1 = выбранное_значение)'
Код: Выделить всё
query= query + 'and (Name_of_Select2 = выбранное_значение)'
Код: Выделить всё
for val in form.objects {
какие-то операции с val
}
Код: Выделить всё
<script language="JavaScript" type="text/javascript">
<!--
function create_query() {
query=""
for val in [...здесь идет перебор всех объектов типа select на форме...] {
zapros='('+name_select+ '=' + val + ')'
if (query ="" )
query=zapros
else {
query=query + 'and (' + zapros +')'
};
}
Код: Выделить всё
<input type="hidden" name="layer" value="слой в мар-файле">
<input type="hidden" name="layer" value="слой в мар-файле">
<input type="hidden" name="qitem" value="">
<input type="hidden" name="qlayer" value="">
<input type="hidden" name="qstring" value="">
<input type="hidden" name="layer" value="слой в мар-файле">
<input type="hidden" name="mode" value="browse">