Работа с PostGis и openlayers

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov »

suGer писал(а):Читал, давно сделал, не помогает (((
Должно работать, попробуйте поправить конфиг и перезапустить службу PostgreSQL.
В принципе можно использовать любое поле с уникальными значениями, например, как это делается для БД, содержащей данные OSM:

Код: Выделить всё

DATA "way from osm_line using unique osm_id using srid=4326"
osm_id в данном случае уникальный идентификатор.
Spatial is now, more than ever, just another column- The Geometry Column.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov »

suGer писал(а):ошибок не выдаёт, но не отображает саму картинку, а только фоновый квадрат
Вместо того, что у вас:

Код: Выделить всё

CLASS
      COLOR 12 200 12
END
нужно писать:

Код: Выделить всё

CLASS
    STYLE
        COLOR 12 200 12
    END
END
Spatial is now, more than ever, just another column- The Geometry Column.
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer »

проблемма не решается... никаких изменения... на работу влияет запушен ли postgreSQL pgAdmin ? вроде нет, в чём ещё могут быть проблеммы ?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov »

Неверный охват, для данного слоя:

Код: Выделить всё

EXTENT 34.5938 49.5877 34.6296 49.6028
Spatial is now, more than ever, just another column- The Geometry Column.
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение 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 
Заранее спасибо ! :D
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov »

suGer писал(а):Как мне сделать чтобы он грузился с ПК ?
А в чем проблема, поднимите WMS-сервис на локальной машине. Разобранный пример map-файла приведен здесь. После того, как поднимите WMS, проверьте его работоспособность в какой-нибудь ГИС, например, в QGIS. Если все отображается, то можно переходить к OpenLayers.
suGer писал(а):Только я не совсем понимаю где после этой адаптации хранится WMS-сервер ?
В качестве WMS-сервера выступает MapServer.
P.S. Мапник - это http://mapnik.org/, а то что вы называете этим словом - это map-файл.
Spatial is now, more than ever, just another column- The Geometry Column.
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение 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>
Сори, чувствую что ошибки простые, но очень уж не мутно для меня. особенно с тем какой адресс писать в скрипте ... :(
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov »

Так с чем у вас проблемы?
Посмотрите вот эти ссылки, может поможет.
http://gis-lab.info/blog/2009-12/webmaperrors/
http://gis-lab.info/qa/openlayers-begin.html
Spatial is now, more than ever, just another column- The Geometry Column.
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer »

В частности не уверен в том что надо писать в wms_onlineresource: . В примере пишется адресс в интернет.
Я пишу адрис к map-файлу на ПК вот так :

Код: Выделить всё

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/postgis-wms.map&
Код postgis-wms выше выкладывал, только wms_onlineresource поменял на см.выше.
На попытку добавить WMS-слой через QGIS по данному адресу выдаёт:
Изображение :|
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer »

Так всё таки что писать в wms_onlineresource ? В статье по созданию wms пишут, что это полный адресс нашего wms-сервера. Откуда я знаю этот адресс ? Я могу написать что угодно типа http://xxx.xx ?
http://localhost/cgi-bin/mapserv.exe?ma ... is-wms.map& - по этой ссылке запускается карта в адресной строке. Её использовать ? Ошибка вверху появляется (
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Работа с PostGis и openlayers

Сообщение Mavka »

Вроде бы onlineresource указан верно, в крайнем случае добавьте в путь к map-файлу имя диска
http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/apps/example/postgis-wms.map&

А если в браузере ввести "Используемый URL", то что покажет?
лангольеры под окном жрали время ом-ном-ном
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer »

так просто ничего не покажет, но добавив &layer=boundary&mode=map показывает то что нужно .
вот такая строка:
http://localhost/cgi-bin/mapserv.exe?ma ... le/postgis - wms.map&layer=boundary&mode=map
А вот почему QGIS не поднимает этот wms ?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Работа с PostGis и openlayers

Сообщение Mavka »

Извините, но ничего не понял...

В режиме mode=map карта работает, про это вы уже писали. Что получится, если в браузере открыть url, который привел qgis в сообщении об ошибке ("Используемый URL")? Это должен быть текстовый файл в формате XML.
Последний раз редактировалось Mavka 15 июл 2010, 20:22, всего редактировалось 1 раз.
лангольеры под окном жрали время ом-ном-ном
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer »

А :D Я понял о чём вы ! Вот результат:

Код: Выделить всё

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>
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Работа с PostGis и openlayers

Сообщение 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-файл.
лангольеры под окном жрали время ом-ном-ном
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 21 гость