解决GeoServices发布带有中文属性字段的shp文件出现无法使用sld文件的问题
来源:互联网 发布:淘宝级别怎么升 编辑:程序博客网 时间:2024/05/21 14:51
在GeoService开源地图服务器中,发布shp文件及风格文件sld是相互独立的。由于GeoService发布配置还不够灵活,所以直接发布带有中文属性字段的shp时,会发生许多问题。
例如如果shp文件中有一个属性字段为“名称”,当用Udig工具设置其它风格时如果使用了名称作为依据,就会在输出的配置文件中出现中文。如:
<?xml version="1.0" encoding="UTF-8"?> <sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0"> <sld:UserLayer> <sld:LayerFeatureConstraints> <sld:FeatureTypeConstraint/> </sld:LayerFeatureConstraints> <sld:UserStyle> <sld:Name>WXQR</sld:Name> <sld:Title/> <sld:FeatureTypeStyle> <sld:Name>group 0</sld:Name> <sld:FeatureTypeName>Feature</sld:FeatureTypeName> <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier> <sld:SemanticTypeIdentifier>colorbrewer:unique:custom</sld:SemanticTypeIdentifier> <sld:Rule> <sld:Name>rule01</sld:Name> <sld:Title>中</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>危险程度</ogc:PropertyName> <ogc:Literal>中</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#2892C7</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>rule02</sld:Name> <sld:Title>低</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>危险程度</ogc:PropertyName> <ogc:Literal>低</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#BFD48A</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>rule03</sld:Name> <sld:Title>安全区</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>危险程度</ogc:PropertyName> <ogc:Literal>安全区</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#D1FF73</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>rule04</sld:Name> <sld:Title>高</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>危险程度</ogc:PropertyName> <ogc:Literal>高</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#F57A7A</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> </sld:FeatureTypeStyle> </sld:UserStyle> </sld:UserLayer></sld:StyledLayerDescriptor>
上面是一个风格文件,里面的配置节出现了许多中文。将以上配置文件导入到GeoService风格库中,结果如下
<?xml version="1.0" encoding="UTF-8"?> <sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0"> <sld:UserLayer> <sld:LayerFeatureConstraints> <sld:FeatureTypeConstraint/> </sld:LayerFeatureConstraints> <sld:UserStyle> <sld:Name>WXQR</sld:Name> <sld:Title/> <sld:FeatureTypeStyle> <sld:Name>group 0</sld:Name> <sld:FeatureTypeName>Feature</sld:FeatureTypeName> <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier> <sld:SemanticTypeIdentifier>colorbrewer:unique:custom</sld:SemanticTypeIdentifier> <sld:Rule> <sld:Name>rule01</sld:Name> <sld:Title>��</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Σ�ճ̶�</ogc:PropertyName> <ogc:Literal>��</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#2892C7</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>rule02</sld:Name> <sld:Title>��</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Σ�ճ̶�</ogc:PropertyName> <ogc:Literal>��</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#BFD48A</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>rule03</sld:Name> <sld:Title>��ȫ��</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Σ�ճ̶�</ogc:PropertyName> <ogc:Literal>��ȫ��</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#D1FF73</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> <sld:Rule> <sld:Name>rule04</sld:Name> <sld:Title>��</sld:Title> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Σ�ճ̶�</ogc:PropertyName> <ogc:Literal>��</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <sld:PolygonSymbolizer> <sld:Fill> <sld:CssParameter name="fill">#F57A7A</sld:CssParameter> <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter> </sld:Fill> <sld:Stroke> <sld:CssParameter name="stroke">#C0C0C0</sld:CssParameter> <sld:CssParameter name="stroke-width">0.1</sld:CssParameter> </sld:Stroke> </sld:PolygonSymbolizer> </sld:Rule> </sld:FeatureTypeStyle> </sld:UserStyle> </sld:UserLayer></sld:StyledLayerDescriptor>
发现中文变成了乱码。这样将地图发布,一定会出现问题。以下是解决方案,网上查了许多资料,集成一下吧。
首先,在新建Add new Store时,设置DBF charset为GB2312
然后按照流程发布shp文件,发布文件时,注意
Feature Type Detial里应该不会出现乱码。不要上传sld风格文件,用记事本打开sld复制,粘贴到风格库里面
最后一步,看到风格文件的编码格式是不是“UTF-8”呢?改成“GB2312”,保存。这样,发布shp文件后,再修改下风格,就不会现出问题了。
- 解决GeoServices发布带有中文属性字段的shp文件出现无法使用sld文件的问题
- 解决fstream不能打开带有中文路径文件的问题
- GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决
- GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决
- 铁路的sld文件描述
- FTP4j下载带有中文的文件时 出现乱码解决方案
- nutch无法下载中文文件的问题[解决]
- 解决fgetcsv打开csv文件中文无法显示的问题。
- 解决jekyll无法本地预览中文文件的问题
- 解决了struts2国际化无法读取属性文件的问题
- 读取文件时出现中文乱码问题的解决
- 解决VS2005中fstream不能打开带有中文路径文件的问题
- shp文件的读取
- shp文件的读取
- dwg文件转shp,将注记内容写入shp文件的属性中
- drupal中文文件无法上传的解决
- 使用SDL image无法读取中文文件的问题
- 带有properties文件的Java程序发布
- 南帝北丐觉醒之时
- 常用正则表达式2
- XML的SelectNodes使用方法以及XPath
- Relationship: char, wchar_t, TCHAR, _T(), wstring, string
- 关于实现宿舍共享校园网上网的几种方法~
- 解决GeoServices发布带有中文属性字段的shp文件出现无法使用sld文件的问题
- 防止jQuery Load使用缓存
- Qt元对象系统
- sim, uim, usim
- wstring 和 wchar_t* 转换(处理const)
- 51CTO技术资料
- mongoDB 入门指南、示例
- 二层交换机和三层交换机有什么区别?
- FLex中的this关键字带来的困扰