posts - 41,  comments - 90,  trackbacks - 0
 
GeoWebCache是一个采用Java servlet实现缓存WMS(Web Map Service)地图切片的开源项目。

当地图客户端请求一张新地图时,GeoWebCache将拦截这些调用,返回经过缓存切片处理的地图文件,提高地图显示速度,减轻geoserver服务器的工作负荷,实现更好的用户体验。

6月9日发布的geoserver 1.7.5 直接包含了geowebcache组件,不需要单独安装和配置,默认状态下没有开启cache。

开启cache功能的步骤:
1、在浏览器输入地址 http://geoserver服务器ip:8080/geoserver/gwc,出现geowebcache页面,加载图层动态列表。
2、在GeoWebCache页面,选择需要发布的图层,单击右边的Seed this layer链接,选择开始zoom和结束zoom,了解GeoWebCache工作原理的开发者,应该明白这两个参数,提交请求。
3、生成cache可能需要一段时间,可以用刷新列表查看进度。

执行完毕后,可在Tomcat的\temp\geowebcache\目录下找到切割成小块的图形文件。
要查看结果,进入GeoWebCache页面,选择OpenLayers或Google Earth列上的链接。
在openlayers中测试,地图显示速度有明显提升。



posted @ 2009-06-15 13:24 天狼 阅读(7644) | 评论 (0)编辑 收藏
AMD三核处理器无法安装MSDE 2000 SP3,包括SQL Server200 SP3、SP4。

CPU AMD Phenom X3 8450
操作系统 Window XP SP2、SP3,Window Server 2003 SP1、SP2

http://social.msdn.microsoft.com/forums/zh-TW/240/thread/bdabbd4f-f7f8-47fc-b502-fa439cdc8dc6/

posted @ 2009-03-02 13:48 天狼 阅读(643) | 评论 (0)编辑 收藏
Oracle通过Windows防火墙的方法:

1、在Windows防火墙上设置开放 TCP 1521端口(Oracle TNSListener),使用telnet oracle服务器ip 1521 测试端口是否开放;
2、打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0,新建一个字符串值:USE_SHARED_SOCKET=true;
3、修改Oracle数据库操作模式,默认为“专用服务器模式”,修改为“共享服务器模式”。可以使用Database Configuration Assistant工具修改;
4、重新启动Oracle数据库实例。

在Windows2003server sp2和Oracle 9.2.0.4上测试通过。
posted @ 2009-02-11 14:04 天狼 阅读(735) | 评论 (3)编辑 收藏
关注uDig这个开源项目已经很久了,uDig基于GeoTools核心和Eclipse平台,定位于桌面GIS软件。
在0.x版本时期,uDig存在速度慢、bug多等很多问题。最近发布的1.1版本速度和稳定性有了极大提升,界面也非常漂亮。
支持多种数据库和网络地图服务接口,使用java的桌面GIS软件开发者不妨一试。
 
posted @ 2009-01-04 17:22 天狼 阅读(2409) | 评论 (1)编辑 收藏
http://219.153.20.6:8080/cqcbd/map.htm
or
http://www.cqcbd.gov.cn:8080/cqcbd/map.htm
服务器在重庆电信机房。
posted @ 2008-06-12 13:19 天狼 阅读(1134) | 评论 (2)编辑 收藏
google免费提供了数量巨大的卫星地图资源。
利用openlayers可以将google maps卫星地图和我们自己的地图合并在一起,当然自己地图的坐标系必须正确,
google maps使用标准的WGS84经纬度坐标。
添加google maps卫星图层分两步完成。
1、在htm页面中引用google maps javascript库:
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAgwXwXyUIfjoFVrD_utlccRRLOu__vN-h4YvLvUUNjkkj2EdVKBSWwGWJ6bCTmu6Mt9dUF86wrzrqNg"
      type="text/javascript"></script>
注意:获得key需要先注册一个google帐号,然后申请一个免费google maps key,key和你的服务器ip绑定。
2、在js脚本里添加以下几句:
try {
    var satellite = new OpenLayers.Layer.Google( "卫星图" , {type: G_SATELLITE_MAP, 'maxZoomLevel':zoom} ); //zoom分为20级,可取0-19,显示城市市区一般可取18  
    map.addLayer(satellite);
} catch(e) {
    alert("无法连接到google maps,卫星地图将不能显示。"); //当网络不正常时,处理异常。
}
注意:如果只使用openlayers开发,不需要使用google maps api。
经google官方人士证实,google maps接口现在和将来都会一直免费提供,只要符合许可协议。

posted @ 2007-12-21 16:53 天狼 阅读(4080) | 评论 (2)编辑 收藏
很好的交互性:前一个测试例子中,鼠标移动到单位标记上,可以弹出信息窗口,在窗口中显示单位名称。
通过openlayers,可以获得WFS图层的feature对象,包括feature的属性feature.attributes对象和feature的空间feature.geometry对象。feature.geometry对象提供多种属性和方法。需要注意的是feature.attributes对象,它包含了所有的属性信息。要得到属性信息,请使用这样的格式feature.attributes['cq:LNAME'],cq是geoserver中的数据仓库名,LNAME是unit图层中的一个属性名,注意这里是严格区分大小的,是否支持中文字段没有测试。
重要提示:openlayer2.5版已经修正的属性数据获取方法,直接使用feature.attributes[属性字段名],不再使用feature.attributes['cq:LNAME']。
posted @ 2007-11-26 11:08 天狼 阅读(3000) | 评论 (0)编辑 收藏
openlayers提供了几十个示例,虽然每个示例都很简单,但却很具有代表性,值得初学者学习。
现在我想做一个测试,包含多个图层、缩放条、工具条、鼠标位置、弹出窗口,其中图层分别来自geoservr
提供的WMS和WFS服务接口。
主要代码如下:
样式定义,定义地图大小,工具条位置和替换按钮图片。
<style type="text/css">
        #map {
            width: 640px;
            height: 475px;
            border: 1px solid black;
        }

        .olControlPanel div {
          display:block;
          position: absolute;
                    top: 0px;
                    left: 190px;
          width:  60px;
          height: 23px;
          margin: 5px;
        }
        .olControlPanel .olControlMouseDefaultsItemActive {
          background-image: url("/openlayers/img/Pan.gif");
        }
        .olControlPanel .olControlMouseDefaultsItemInactive {
          background-image: url("/openlayers/img/PanSelected.gif");
        }
        .olControlPanel .olControlZoomBoxItemInactive {
          width:  60px; 
          height: 23px;
          position: absolute;
                    top: 0px;
                    left: 250px;
          background-image: url("/openlayers/img/ZoomInSelected.gif");
        }
        .olControlPanel .olControlZoomBoxItemActive {
          width:  60px; 
          height: 23px;
          position: absolute;
                    top: 0px;
                    left: 250px;
          background-image: url("/openlayers/img/ZoomIn.gif");
        }
         .olControlPanel .olControlSelectFeatureItemInactive {
          width:  60px; 
          height: 23px;
          position: absolute;
                    top: 0px;
                    left: 310px;
          background-image: url("/openlayers/img/InfoSelected.gif");
        }
        .olControlPanel .olControlSelectFeatureItemActive {
          width:  60px; 
          height: 23px;
          position: absolute;
                    top: 0px;
                    left: 310px;
          background-image: url("/openlayers/img/Info.gif");
        }
    </style>
JS代码,核心部分。
<script src="/openlayers/OpenLayers.js"></script>
    <script type="text/javascript">
        <!--
        //定义全局变量
        var map, layer, selectControl, selectedFeature;
        //关闭弹出窗口的函数
        function onPopupClose(evt) {
            selectControl.unselect(selectedFeature);
        }
        //构造弹出窗口的函数
        function onFeatureSelect(feature) {
            selectedFeature = feature;
            popup = new OpenLayers.Popup.Anchored("chicken",
                                     feature.geometry.getBounds().getCenterLonLat(),
                                     new OpenLayers.Size(250,75),
                                     "<div style='font-size:.8em'>" + feature.attributes['cq:LNAME'] +"</div>",
                                     null, true, onPopupClose);
            feature.popup = popup;
            map.addPopup(popup);
        }
        //销毁弹出窗口的函数
        function onFeatureUnselect(feature) {
            map.removePopup(feature.popup);
            feature.popup.destroy();
            feature.popup = null;
        }
        //地图和页面加载函数
        function init(){
            //设置地图缩放范围和缩放等级,0级比例尺最小
            map = new OpenLayers.Map( $('map'), {  maxScale: 500, minScale: 500000, numZoomLevels: 5 });
            //加载行政区图层,WMS栅格图像
            layer = new OpenLayers.Layer.WMS( "District",
                    "http://192.98.151.17:8081/geoserver/wms", {layers: 'cq:GMAP_DISTRICT'} );
            map.addLayer(layer);
            //加载水系图层,WMS栅格图像
            layer = new OpenLayers.Layer.WMS( "Water",
                    "http://192.98.151.17:8081/geoserver/wms", {layers: 'cq:GMAP_LAKE', 'transparent': true, format: 'image/png' } );
            map.addLayer(layer);
            //加载单位图层,WFS矢量数据,由openlayers在客户端绘制,注意:数量太多会导致速度缓慢
            layer = new OpenLayers.Layer.WFS( "Unit",
                    "http://192.98.151.17:8081/geoserver/wfs", {typename: 'cq:GPOI_GOV'},
               { 
                      typename: 'unit',
                      featureNS: 'http://www.openplans.org/cq',
                      extractAttributes: true,
                      maxfeatures: 10,
                      textAttrToDisplay: 'lname'
               } );
            map.addLayer(layer);
            //在地图上添加按钮和工具条
            zb = new OpenLayers.Control.ZoomBox();
            var panel = new OpenLayers.Control.Panel({defaultControl: zb});
            selectControl = new OpenLayers.Control.SelectFeature(layer, {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect, hover: true});
            panel.addControls([
                new OpenLayers.Control.MouseDefaults(), zb, selectControl
            ]);
            map.addControl(panel);
          
            map.addControl(new OpenLayers.Control.PanZoomBar({zoomWorldIcon:false}));
            map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
            map.addControl(new OpenLayers.Control.MousePosition());
            //设置初始地图的中心坐标和缩放等级
            map.setCenter(new OpenLayers.LonLat(106.5, 29.5), 3);
           
        }
        // -->
    </script>
HTML代码
<body onload="init()">
    <h1>OpenLayers Test</h1>
    <div id="panel"></div>
    <div id="map"></div>
    <textarea style="display:none" id="serialize" cols="96" rows="10"/>
  </body>

posted @ 2007-11-26 10:58 天狼 阅读(31612) | 评论 (15)编辑 收藏
Geoserver 1.5.2 已于8月3日正式发布,项目组正邀请全球开发者测试。
本次更新修正了70多个bug,可以想象工作量是非常大的!

接下来进行升级测试,将现有系统(基于geoserver1.4.0, tomcat5.0.28, oracle9.2.0.4),升级到1.5.2。升级过程很简单,替换文件即可。
重新启动tomcat,进入geoserver管理界面,没有问题,原来的十几个图层加载成功。
打开浏览器地图客户端,迟迟没有地图显示出来,查看tomcat的运行log纪录,出错了:
:380031 [严重] org.geotools.data.jdbc.JDBC1DataStore - Error Performing SQL query: SELECT "LNAME", "POPNAME", "CLASS", "DISTRICT", "ADDRESS", "TEL_NO", "MI_STYLE", "MI_PRINX", "GEOLOC", "CID", "TID", "PID", "HTTP_ADR", "RP_PID", "MEMO", "ID" FROM "GPOI_BANK" WHERE SDO_RELATE("GEOLOC",MDSYS.SDO_GEOMETRY(2003,8307,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(106.3398675279321,29.35768529955373,106.7158359115559,29.67623870044627)),'mask=anyinteract querytype=WINDOW') = 'TRUE'
java.sql.SQLException: ORA-29902: 执行 ODCIIndexStart() 例行程序中出错
ORA-13373: 测量数据不支持类型为 Extent 的元素
ORA-06512: 在"MDSYS.SDO_INDEX_METHOD_9I", line 368
ORA-06512: 在line 1
把查询放到sqlplus中执行,错误依旧。仔细检查查询语句,发现MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3)和以前的版本不同,1.4是MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),错误原因就在1和3上。
1表示直线联结
2表示弧线联结
3表示混合联结,而oracle9i版本不支持3这个参数,所以出现"ORA-13373: 测量数据不支持类型为 Extent 的元素"错误。
换用Oracle10g(10.2.0.1)测试,地图可以正常显示,没有错误。
知道问题原因就好办了,改用以前的oracle插件一切ok。

紧接着测试WCS接口,这是我最关心的功能。
根据文档和示例,先后添加了DEM(来自美国USGS)和Tiff卫星照片,客户端显示正常。
DEM分级颜色通过dem.sld设定,无法实现三维浏览。
Tiff文件预先配准,采用矢量图层坐标系统。

posted @ 2007-08-08 15:40 天狼 阅读(1700) | 评论 (1)编辑 收藏
最近忙着装修房子,很久没有更新博客了。

6月9日,Geoserver 1.5.1正式发布,这是一个值得期待的版本。
从Geoserver 1.4到1.5.1的升级过程比较简单,没有遇到特别的问题。
地图渲染速度没有太大变化,没有从1.3到1.4那种速度上的跳跃感。
平台变化:
1、内核升级到Geotools2.3.2;
2、支持多种格式的WCS发布,很有用的功能;
3、引入OpenLayer,为客户端开发提供一种新的选择。
开发者可以使用OpenLayer直接发布地图,减少了开发工作量。相对而言,mapbuilder是一个强大又复杂的系统。
测试中发现的问题:
1、读取oracle空间表,渲染地图出现错误。
分析原因:官方提供的oracle扩展包gt2-oracle-spatial-2.3.2.jar和驱动程序ojdbc14.jar在9i(9204)数据库上有问题,ojdbc14.jar是10g的驱动程序。使用老版本的gt2-oracle-spatial和9i的JDBC驱动,问题解决。估计官方提供的oracle扩展包只适用于10g。
2、对oracle空间表进行WFS查询,返回的XML结果集有问题,导致WFS查询失败。
例如某查询应该返回:
<gml:featureMember>
    <cq:CBD_BUILDING fid="CBD_BUILDING.161">
    <cq:ID>161</cq:ID>
    <cq:LNAME>都市广场</cq:LNAME>
实际返回的XML为:
<gml:featureMember>
    <gml:CBD_BUILDING fid="CBD_BUILDING.161">
    <gml:ID>161</gml:ID>
    <gml:LNAME>都市广场</gml:LNAME>

PostGIS和ArcSDE没有类似的bug。
posted @ 2007-06-15 14:44 天狼 阅读(1629) | 评论 (1)编辑 收藏
仅列出标题
共4页: 上一页 1 2 3 4 下一页