JAVA中文字体显示问题-以Geoserver为例

转自:http://bbs.sciencenet.cn/home.php?mod=space&uid=204718&do=blog&id=268923

遇到了同样的问题,其问题就是缺少渲染使用的字体。文章内容如下

-------------------------------------

JAVA环境的中文显示在Windows系统中一般是没有问题的,而在Linux环境中java应用程序的中文不能正常显示,查了些资料,原因大概是java程序启动时会去在$JAVA_HOME/JRE/lib/fonts目录下寻找字体来显示。这样,如果我们手工设置了中文字体的路径,就可以让应用程序找到相应的中文字体啦。

参照网上的资料,具体步骤如下:

在java的字体文件的目录下建立一个名为fallback的文件,并将中文字体文件(可从xp中复制)

  1. cd /usr/java/jre/lib/fonts
  2. mkdir fallback
  3. cp heiti,ttf fallback
  4. cd fallback
  5. mkfontscale
  6. mkfontdir
建立字体目录的连接
  1. ln -s $FONTS_PATH/FONT_DIR /usr/java//jre/lib/fonts/fallback
重新启动Geoserver,字体不再出现乱码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java上传TIFF文件至GeoServer并发布服务,你需要使用一些相关的库和工具,其中包括commons-codec、commons-io、commons-logging、geoserver-manager和jdom。这些库可以帮助你处理文件上传、与GeoServer进行交互等操作。 首先,你需要确保已经将这些库添加到你的Java项目中。你可以通过在项目的构建路径中添加这些JAR文件来实现。具体的添加方法可以参考你使用的Java开发工具的文档。 接下来,你可以使用以下代码来上传TIFF文件至GeoServer: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.CatalogBuilder; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.WorkspaceInfo; import org.geoserver.catalog.impl.CatalogImpl; import org.geoserver.catalog.impl.CatalogBuilderImpl; import org.geoserver.catalog.impl.LayerInfoImpl; import org.geoserver.catalog.impl.WorkspaceInfoImpl; import org.geoserver.manager.GeoServerManager; import org.geotools.data.memory.MemoryDataStore; import org.geotools.data.simple.SimpleFeatureCollection; import org.geotools.data.simple.SimpleFeatureSource; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.referencing.crs.CoordinateReferenceSystem; public class GeoServerUploader { private static final String GEOSERVER_URL = "http://localhost:8080/geoserver"; private static final String GEOSERVER_USERNAME = "admin"; private static final String GEOSERVER_PASSWORD = "password"; private static final String WORKSPACE_NAME = "workspace"; private static final String STORE_NAME = "store"; private static final String LAYER_NAME = "layer"; public static void main(String[] args) throws IOException { // 设置GeoServer的连接信息 GeoServerManager manager = new GeoServerManager(GEOSERVER_URL, GEOSERVER_USERNAME, GEOSERVER_PASSWORD); // 创建工作空间 WorkspaceInfo workspace = new WorkspaceInfoImpl(); workspace.setName(WORKSPACE_NAME); manager.addWorkspace(workspace); // 创建数据存储 MemoryDataStore dataStore = new MemoryDataStore(); dataStore.setNamespaceURI(workspace.getNamespace()); dataStore.setName(STORE_NAME); manager.addDataStore(dataStore); // 上传TIFF文件至数据存储 File tiffFile = new File("path/to/your/tiff/file.tif"); FileInputStream tiffStream = new FileInputStream(tiffFile); byte[] tiffBytes = IOUtils.toByteArray(tiffStream); manager.uploadCoverage(STORE_NAME, LAYER_NAME, tiffBytes); // 创建图层 LayerInfo layer = new LayerInfoImpl(); layer.setName(LAYER_NAME); layer.setTitle(LAYER_NAME); layer.setResource(dataStore.getFeatureSource(LAYER_NAME)); manager.addLayer(layer); // 设置坐标系和样式 CoordinateReferenceSystem crs = dataStore.getFeatureSource(LAYER_NAME).getSchema().getCoordinateReferenceSystem(); layer.setCRS(crs); layer.setDefaultStyle(manager.getStyle("default")); manager.addLayer(layer); // 发布服务 CatalogBuilder catalogBuilder = new CatalogBuilderImpl((CatalogImpl) manager.getCatalog()); Catalog catalog = catalogBuilder.build(); catalog.add(workspace); catalog.add(dataStore); catalog.add(layer); catalog.save(null); } } ``` 上述代码中,你需要根据你的实际情况修改以下信息: - GEOSERVER_URL:GeoServer的URL地址 - GEOSERVER_USERNAME:GeoServer的用户名 - GEOSERVER_PASSWORD:GeoServer的密码 - WORKSPACE_NAME:工作空间的名称 - STORE_NAME:数据存储的名称 - LAYER_NAME:图层的名称 - tiffFile:你要上传的TIFF文件的路径 你可以将上述代码保存为一个Java类,并在你的项目中执行它。 请注意,这只是一个示例代码,你可能需要根据你的具体需求进行适当的修改。另外,确保你已经正确配置了GeoServer和相关的依赖库。 希望以上信息对你有所帮助。如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值