Страница 2 из 3
Re: Работа с PostGis и openlayers
Добавлено: 29 июн 2010, 14:22
Denis Rykov
suGer писал(а):Читал, давно сделал, не помогает (((
Должно работать, попробуйте поправить конфиг и перезапустить службу PostgreSQL.
В принципе можно использовать любое поле с уникальными значениями, например, как это делается для БД, содержащей данные OSM:
Код: Выделить всё
DATA "way from osm_line using unique osm_id using srid=4326"
osm_id в данном случае уникальный идентификатор.
Re: Работа с PostGis и openlayers
Добавлено: 29 июн 2010, 14:28
Denis Rykov
suGer писал(а):ошибок не выдаёт, но не отображает саму картинку, а только фоновый квадрат
Вместо того, что у вас:
нужно писать:
Re: Работа с PostGis и openlayers
Добавлено: 29 июн 2010, 14:46
suGer
проблемма не решается... никаких изменения... на работу влияет запушен ли postgreSQL pgAdmin ? вроде нет, в чём ещё могут быть проблеммы ?
Re: Работа с PostGis и openlayers
Добавлено: 30 июн 2010, 10:37
Denis Rykov
Неверный охват, для данного слоя:
Re: Работа с PostGis и openlayers
Добавлено: 30 июн 2010, 12:09
suGer
Большое спасибо, следовало самому додуматься...
И так теперь я знаю как забить шейп в postgreSQl и как с помощью мапника отобразить его в браузере. Но это отображение происходит путём прямого запроса в адрессной строке.
Теперь надо сделать что бы эта карта отображалась на html, нашёл такой скрипт:
Код: Выделить всё
<script type="text/javascript">
var lon = 44;
var lat = 46;
var zoom = 5;
var map, layer;
map = new OpenLayers.Map('map2');
layer = new OpenLayers.Layer.WMS(
"GIS-Lab Test WMS",
"http://gis-lab.info/cgi-bin/wmsworld?",
{layers: 'world'}
);
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
map.addControl(new OpenLayers.Control.LayerSwitcher());
</script>
Но тут как видно используется WMS сервис из интернета. Как мне сделать чтобы он грузился с ПК ?
В статье
gis-lab.info/qa/mapserver-wms.html пишется про адаптацию map к WMS . Только я не совсем понимаю где после этой адаптации хранится WMS-сервер ?
Не могли бы вы на примере моего мапника пояснить что дабавить для адаптации и что после этого деать ?
содержание map:
Код: Выделить всё
MAP
IMAGETYPE GIF
EXTENT 34.59 49.58 34.63 49.6
SIZE 300 300
IMAGECOLOR 255 255 100
LAYER
NAME boundary
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=thegame dbname=postgis host=localhost"
DATA "the_geom from Poltava10_Vegetation_region using unique gid using srid=4326"
#FILTER "oid>17700"
#STATUS ON
TYPE POLYGON
CLASS
NAME "Растительность"
STYLE
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END
END
END
Заранее спасибо !

Re: Работа с PostGis и openlayers
Добавлено: 30 июн 2010, 12:27
Denis Rykov
suGer писал(а):Как мне сделать чтобы он грузился с ПК ?
А в чем проблема, поднимите WMS-сервис на локальной машине. Разобранный пример map-файла приведен
здесь. После того, как поднимите WMS, проверьте его работоспособность в какой-нибудь ГИС, например, в QGIS. Если все отображается, то можно переходить к OpenLayers.
suGer писал(а):Только я не совсем понимаю где после этой адаптации хранится WMS-сервер ?
В качестве WMS-сервера выступает MapServer.
P.S. Мапник - это
http://mapnik.org/, а то что вы называете этим словом - это map-файл.
Re: Работа с PostGis и openlayers
Добавлено: 01 июл 2010, 14:57
suGer
Для вас возможно всё просто, а мне как-то эта часть даётся наиболее тяжело. Вообщем адаптировал так файл (не проверял QGIS т.к. нет ресурсов чтобы его скачать ) вот файл :
Код: Выделить всё
MAP
NAME "WMS"
STATUS ON
IMAGETYPE PNG
EXTENT 34.59 49.58 34.63 49.6
SIZE 400 300
SHAPEPATH "/ms4w/apps/example/shp/"
IMAGECOLOR 255 255 255
WEB
TEMPLATE '/ms4w/apps/example/templates/template.html'
IMAGEPATH '/ms4w/tmp/ms_tmp/'
IMAGEURL '/ms_tmp/'
METADATA
wms_title "GIS-LAB Demo"
wms_abstract "This is the WMS demo from GIS-Lab"
wms_onlineresource "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map&"
wms_srs "EPSG:4326"
wms_getfeatureinfo "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map&"
wms_featureinfoformat "text/plain"
END
END
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
END
LAYER # Определяем полигональный слой
NAME veget
DATA Poltava10_Vegetation_region
STATUS ON
TYPE POLYGON
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
END
CLASS
NAME "Растительность"
STYLE
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END
METADATA
wms_title "Countries 1"
wms_abstract "Countries 1 test"
wms_srs "EPSG:4326"
wms_include_items "all"
END
END
END
#http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map&layer=veget&mode=map
Вот страница template.html :
Код: Выделить всё
<html>
<head>
<title> MapServer WMS</title>
</head>
<body>
<div style="width:400px; height:300px" id="map2"></div>
<script type="text/javascript">
var lon = 44;
var lat = 46;
var zoom = 5;
var map, layer;
map = new OpenLayers.Map('map2');
layer = new OpenLayers.Layer.WMS("Test WMS", "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map", {layers: 'veget'});
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
map.addControl(new OpenLayers.Control.LayerSwitcher());
</script>
</body>
</html>
Сори, чувствую что ошибки простые, но очень уж не мутно для меня. особенно с тем какой адресс писать в скрипте ...

Re: Работа с PostGis и openlayers
Добавлено: 02 июл 2010, 20:28
Denis Rykov
Re: Работа с PostGis и openlayers
Добавлено: 03 июл 2010, 12:21
suGer
В частности не уверен в том что надо писать в wms_onlineresource: . В примере пишется адресс в интернет.
Я пишу адрис к map-файлу на ПК вот так :
Код: Выделить всё
http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/postgis-wms.map&
Код postgis-wms выше выкладывал, только wms_onlineresource поменял на см.выше.
На попытку добавить WMS-слой через QGIS по данному адресу выдаёт:

Re: Работа с PostGis и openlayers
Добавлено: 15 июл 2010, 17:46
suGer
Так всё таки что писать в wms_onlineresource ? В статье по созданию wms пишут, что это полный адресс нашего wms-сервера. Откуда я знаю этот адресс ? Я могу написать что угодно типа
http://xxx.xx ?
http://localhost/cgi-bin/mapserv.exe?ma ... is-wms.map& - по этой ссылке запускается карта в адресной строке. Её использовать ? Ошибка вверху появляется (
Re: Работа с PostGis и openlayers
Добавлено: 15 июл 2010, 18:29
Mavka
Вроде бы onlineresource указан верно, в крайнем случае добавьте в путь к map-файлу имя диска
http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/apps/example/postgis-wms.map&
А если в браузере ввести "Используемый URL", то что покажет?
Re: Работа с PostGis и openlayers
Добавлено: 15 июл 2010, 18:57
suGer
так просто ничего не покажет, но добавив &layer=boundary&mode=map показывает то что нужно .
вот такая строка:
http://localhost/cgi-bin/mapserv.exe?ma ... le/postgis - wms.map&layer=boundary&mode=map
А вот почему QGIS не поднимает этот wms ?
Re: Работа с PostGis и openlayers
Добавлено: 15 июл 2010, 19:33
Mavka
Извините, но ничего не понял...
В режиме mode=map карта работает, про это вы уже писали. Что получится, если в браузере открыть url, который привел qgis в сообщении об ошибке ("Используемый URL")? Это должен быть текстовый файл в формате XML.
Re: Работа с PostGis и openlayers
Добавлено: 15 июл 2010, 19:51
suGer
А

Я понял о чём вы ! Вот результат:
Код: Выделить всё
This document had no style information.
<WMS_Capabilities version="1.3.0" xmlns="http://www.opengis.net/wms" xmlns:sld="http://www.opengis.net/sld" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ms="http://mapserver.gis.umn.edu/mapserver" xsi:schemaLocation="http://www.opengis.net/wms http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd http://mapserver.gis.umn.edu/mapserver http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&service=WMS&version=1.3.0&request=GetSchemaExtension">
<!-- MapServer version 5.6.3 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=PDF OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=RGBA_PNG SUPPORTS=TILECACHE INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->
<Service>
<Name>
WMS
</Name>
<Title>
GIS-LAB Demo
</Title>
<Abstract>
This is the WMS demo from GIS-Lab
</Abstract>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
<ContactInformation>
</ContactInformation>
<MaxWidth>
2048
</MaxWidth>
<MaxHeight>
2048
</MaxHeight>
</Service>
<Capability>
<Request>
<GetCapabilities>
<Format>
text/xml
</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Get>
<Post>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Post>
</HTTP>
</DCPType>
</GetCapabilities>
<GetMap>
<Format>
image/gif
</Format>
<Format>
image/png
</Format>
<Format>
image/png; mode=24bit
</Format>
<Format>
image/jpeg
</Format>
<Format>
image/vnd.wap.wbmp
</Format>
<Format>
image/tiff
</Format>
<Format>
image/svg+xml
</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Get>
<Post>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Post>
</HTTP>
</DCPType>
</GetMap>
<GetFeatureInfo>
<Format>
text/plain
</Format>
<Format>
application/vnd.ogc.gml
</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Get>
<Post>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Post>
</HTTP>
</DCPType>
</GetFeatureInfo>
<sld:DescribeLayer>
<Format>
text/xml
</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Get>
<Post>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Post>
</HTTP>
</DCPType>
</sld:DescribeLayer>
<sld:GetLegendGraphic>
<Format>
image/gif
</Format>
<Format>
image/png
</Format>
<Format>
image/png; mode=24bit
</Format>
<Format>
image/jpeg
</Format>
<Format>
image/vnd.wap.wbmp
</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Get>
<Post>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Post>
</HTTP>
</DCPType>
</sld:GetLegendGraphic>
<ms:GetStyles>
<Format>
text/xml
</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Get>
<Post>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&"/>
</Post>
</HTTP>
</DCPType>
</ms:GetStyles>
</Request>
<Exception>
<Format>
XML
</Format>
<Format>
INIMAGE
</Format>
<Format>
BLANK
</Format>
</Exception>
<sld:UserDefinedSymbolization SupportSLD="1" UserLayer="0" UserStyle="1" RemoteWFS="0" InlineFeature="0" RemoteWCS="0"/>
<Layer>
<Name>
WMS
</Name>
<Title>
GIS-LAB Demo
</Title>
<Abstract>
This is the WMS demo from GIS-Lab
</Abstract>
<CRS>
EPSG:4326
</CRS>
<EX_GeographicBoundingBox>
<westBoundLongitude>
34.59
</westBoundLongitude>
<eastBoundLongitude>
34.63
</eastBoundLongitude>
<southBoundLatitude>
49.58
</southBoundLatitude>
<northBoundLatitude>
49.6
</northBoundLatitude>
</EX_GeographicBoundingBox>
<Layer queryable="0" opaque="0" cascaded="0">
<Name>
boundary
</Name>
<!-- WARNING: Mandatory metadata '..._title' was missing in this context. -->
<Title>
boundary
</Title>
<EX_GeographicBoundingBox>
<westBoundLongitude>
-3.40282e+038
</westBoundLongitude>
<eastBoundLongitude>
3.40282e+038
</eastBoundLongitude>
<southBoundLatitude>
-3.40282e+038
</southBoundLatitude>
<northBoundLatitude>
3.40282e+038
</northBoundLatitude>
</EX_GeographicBoundingBox>
<Style>
<Name>
default
</Name>
<Title>
default
</Title>
<LegendURL width="133" height="23">
<Format>
image/png
</Format>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/example/postgis-wms.map&version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=boundary&format=image/png&STYLE=default"/>
</LegendURL>
</Style>
</Layer>
</Layer>
</Capability>
</WMS_Capabilities>
Re: Работа с PostGis и openlayers
Добавлено: 15 июл 2010, 20:12
Mavka
Очевидная проблема - EX_GeographicBoundingBox:
Код: Выделить всё
<Layer>
<Name>WMS</Name>
<Title>GIS-LAB Demo</Title>
<Abstract>This is the WMS demo from GIS-Lab</Abstract>
<CRS>EPSG:4326</CRS>
<EX_GeographicBoundingBox>
<westBoundLongitude>34.59</westBoundLongitude>
<eastBoundLongitude>34.63</eastBoundLongitude>
<southBoundLatitude>49.58</southBoundLatitude>
<northBoundLatitude>49.6</northBoundLatitude>
</EX_GeographicBoundingBox>
<Layer queryable="0" opaque="0" cascaded="0">
<Name>boundary</Name>
<!-- WARNING: Mandatory metadata '..._title' was missing in this context. -->
<Title>boundary</Title>
<EX_GeographicBoundingBox>
<westBoundLongitude>-3.40282e+038</westBoundLongitude>
<eastBoundLongitude>3.40282e+038</eastBoundLongitude>
<southBoundLatitude>-3.40282e+038</southBoundLatitude>
<northBoundLatitude>3.40282e+038</northBoundLatitude>
</EX_GeographicBoundingBox>
<Style>
<Name>default</Name>
<Title>default</Title>
<LegendURL width="133" height="23">
<Format>image/png</Format>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="simple"
xlink:href="[сокращено]" />
</LegendURL>
</Style>
</Layer>
</Layer>
То, что приводится в первом BoundingBox - это экстент всей карты, он не играет роли. А второй - для слоя, почему то сбит. Проверьте map-файл.