AutoCAD文件(dxf、dwg)发布到 Geoserver作为地图图层

目录

一、Geoserver服务运行

二、dwg文件转dxf

三、dxf转shp

四、shp转文件查看

五、shp文件style设置

六、shp文件导入到Geoserver

七、open Layer 展示

本博客中涉及的操作只适用于,OpenStreetMap数据源,其他数据源需要融汇贯通。

准备环境

一、Geoserver服务运行

java sdk、tomcat、Geoserver

具体配置过程参见:

在windows环境下配置GeoServer

二、dwg文件转dxf

 工具软件:Autodesk AutoCAD 2016

Autodesk AutoCAD 2016插件:Arcgis for AutoCAD

这一步主要的目的是转化格式和坐标。

1.使用AutoCAD打开文件、去掉多余的图层和信息

打开autoCAD文件,整理文件信息

2.加载ArcGIS for AutoCAD调整坐标和文件大小

(1)加载过程及操作参见 

ArcGIS for AutoCAD轻松实现ArcGIS 与 AutoCAD互操作

 (2)分配坐标。这一步很关键,关系到与原有的shp文件是否在同一坐标系。

         本博客采用的坐标系ESPG:900913(来自原有的shp文件,open street map导出的shp文件和osm文件采用的就是这一坐标系)

(3)选择坐标系。

  选择ArcGIS for AutoCAD安装目录 D:\Program Files\ArcGIS for AutoCAD 355\Coordinate Systems\Projected Coordinate Systems\World 下的WGS 1984 Web Mercator.prj   

     坐标说明参见  https://www.cnblogs.com/arxive/p/6103358.html?utm_source=itdadao&utm_medium=referral

(4)选择地图类型,选择world Imagery

(5)地图导入后的效果,如果一开始看不到地图,就缩放地图。此时AutoCAD的坐标原点与之前选择的地理坐标原点重合。(ESPG:900913的坐标原点在非洲西部的大西洋中)

(6)整体显示

(6)平移图形到目标位置,并缩放图形至目标大小。

(7)保存文件为dxf或者dwg格式。

三、dxf或者dwg转shp

 工具:QGIS 3.4.1

(1)导入dxf或者dwg,如果在Project中没有看到Import/Export -> Import Layers from dwg/dxf ,那么跳到(2)为QGIS添加插件  “DXF Importer /DXF2Shp ”

不记得该功能是软件自带,还是插件新增的。

(2)添加插件DXF Importer /DXF2Shp。在plugins|installed 窗口中 搜索安装 该插件

(3)导入配置填写如图,我的图层取名为“EPSG:900913room”.

我导入dwg文件的时候报错,丢掉了一些需要显示的内容,导入dxf时没有报错。

(4)导入以后,软件左下方出现图层。选中新导入的图层并右击,选择“Zoom to Group ”或者“Zoom to Layer”。

显示效果如图,图片中同时显示了Open Street Map 的 gis_osm_roads_free_1.shp 文件作为参照。

 

对比效果

(4)导出为shp文件 右击图层 选择 Export -> Save Feature AS ... 弹出下图对话框

将gruop下的各个图层导出到shp文件

(4)文件

 

四、shp转文件查看

工具:uDig

uDig,不仅是shp文件查看工具跟重要的是,设计渲染样式的工具

 

具体操作参见

如何用uDig美化地图并发布到GeoServer

https://blog.csdn.net/coderwait/article/details/80453162

 

五、shp文件style设置

 同上

六、shp文件导入到Geoserver

具体操作见 如何用uDig美化地图并发布到GeoServer

(1)图层发布时,坐标系选择。

发布完成后显示。

七、Openlayers 展示

(1)显示结果。蓝色的线条为Geoserver服务提供的数据,我在Geoserver中导入了Open steet map的道路(OSM)数据 一并显示出来了,蓝色的小方块是dwg的文件内容

显示效果较差主要是因为图层的style文件没有配置

 

整体效果,open Street map 中 中国的数据没有台湾和藏南

 

(2)OpenLayers3  html 源码。

<!DOCTYPE html>
<html>
  <head>
    <title>Tiled WMS</title>
    <link rel="stylesheet" href="https://openlayers.org/en/v3.20.1/css/ol.css" type="text/css">
    <!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
    <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
    <script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script>
  </head>
  <body>
    <div id="map" class="map"></div>
    <script>
      var layers = [
		//OpenSteetMap地图来源网络
        new ol.layer.Tile({
          source: new ol.source.OSM()
        }),
		//OpenSteetMap 道路图层
		new ol.layer.Tile({
          //extent: [-13884991, 2870341, -7455066, 6338219],
          source: new ol.source.TileWMS({
			url: 'http://localhost:8080/geoserver/wms',
			params: {'LAYERS': 'china:planet_osm_roads_big', 'TILED': true},
			serverType: 'geoserver'
          })
        }),
		//dxf文件的图层
		new ol.layer.Tile({
        //  extent: [-13884991, 2870341, -7455066, 6338219],
          source: new ol.source.TileWMS({
            url: 'http://192.168.0.157:8080/geoserver/wms',
            params: {'LAYERS': 'chinaoutline:lines', 'TILED': true},
           serverType: 'geoserver'
          })		  
        }),
		new ol.layer.Tile({
        //  extent: [-13884991, 2870341, -7455066, 6338219],
          source: new ol.source.TileWMS({
            url: 'http://192.168.0.157:8080/geoserver/wms',
            params: {'LAYERS': 'chinaoutline:polylines', 'TILED': true},
           serverType: 'geoserver'
          })
        })
      ];
      var map = new ol.Map({
        layers: layers,
        target: 'map',
        view: new ol.View({
          center: [12590580.877,3254259.398 ],//以自己文件的坐标为中心
          zoom: 10
        })
      });
    </script>
  </body>
</html>

  

 

转载于:https://www.cnblogs.com/lianshanIn17/p/10255694.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 .NET 开发的应用程序中,我们可以使用一些第三方库或 API,来读取和展示 dxf/dwg 文件。常用的有以下几种: 1. AutoCAD .NET API:AutoCAD 自带的 API,可以在应用程序中使用它来读取和处理 dxf/dwg 文件。不过要注意需要安装 AutoCAD 软件,且使用该 API 需要一定的 AutoCAD 的编程经验。 2. TX Text Control:这是一款非常流行的文本处理控件,可以读取和展示多种文档格式,包括 dxf/dwg。使用该控件,我们可以将 dxf/dwg 文件转换为图像数据,并在应用程序中以图片的形式展示。 3. AutoCAD OEM:这是针对 CAD 软件开发的 OEM 组件,支持读取和处理 dxf/dwg 文件。可以根据客户需求定制开发,但是需要一定的 CAD 技术储备。 4. Open Design Alliance:这是一个非盈利性质的组织,专注于 CAD 相关技术的研发和开发。它提供了一系列的 API 和软件库,可以用于读取和展示 dxf/dwg 文件,同时支持多种平台和语言。 总之,无论采用哪种方案,读取和展示 dxf/dwg 文件都需要借助相应的工具和技术。我们需要根据自己的需求和实际情况,选择最适合的方案进行实施。 ### 回答2: 在计算机辅助设计(CAD)领域中,DXFDWG是两种常见的文件格式。这些格式通常用于保存复杂的图形和模型,如建筑设计图纸和机械零件。通过使用.NET框架提供的类库和工具,我们可以轻松地读取和展示这些类型的文件。 读取DXFDWG文件的过程涉及到解析文件中的元素和实体,并将其转换为可视化对象。为了实现这个目标,我们可以使用专门的库,如Open Design Alliance的Teigha库,或者使用.NET框架中提供的AutoCAD、Draw和CADInterop等类库。 在使用这些库进行文件读取和展示之前,我们需要安装相应的包,并且熟悉DXFDWG文件的结构和格式。接下来,我们可以使用类似于以下的代码片段来读取和展示这些文件: ``` using Autodesk.AutoCAD.ApplicationServices.Core; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; // 打开DWG文件 Database db = new Database(false, true); db.ReadDwgFile("path/to/file.dwg", FileOpenMode.OpenForReadAndAllShare, true, ""); // 获取模型空间 BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable; BlockTableRecord btr = bt[BlockTableRecord.ModelSpace].GetObject(OpenMode.ForRead) as BlockTableRecord; // 遍历实体并将其添加到场景中 foreach (ObjectId id in btr) { Entity ent = id.GetObject(OpenMode.ForRead) as Entity; if (ent != null) // 成功读取实体 { // 将实体转换为渲染对象 // ... // 添加渲染对象到场景中 // ... } } //展示文件,保存并关闭 db.SaveAs("path/to/output.dwg", DwgVersion.Current); db.CloseInput(true); ``` 在代码中,我们首先打开DWG文件并获取其中的模型空间。随后,我们遍历该空间的所有实体,并将其转换为能够被渲染的对象,然后将其添加到场景中。最后,我们可以保存渲染结果并关闭文件。 总之,使用.NET框架读取和展示DXFDWG文件是可行的,需要使用特定的类库并了解文件格式和结构。有了这些工具和知识,我们可以轻松地在.NET平台上实现各种CAD应用程序。 ### 回答3: DxfDwg文件是一种常见的CAD文件格式,它们在制图行业和工业设计中应用广泛。为了实现这样的需求,我们可以采用.net平台的Autodesk AutoCAD API来读取和展示这些文件。 通过使用Autodesk AutoCAD API,我们可以轻松地读取dxfdwg文件。首先,我们需要创建一个CAD应用程序并加载AutoCAD API。然后,我们可以使用API来打开dxfdwg文件并读取文件中的对象和实体。这些读取的数据可以用于展示文件的各个部分,如图层、块、文本、线条和基本几何形状等。 读取并展示dxfdwg文件的过程中,我们需要注意一些细节。例如,在读取时需要确定文件的版本和在展示时需要考虑线条宽度等样式信息。此外,在处理较大的CAD文件时,需要考虑性能优化,以确保程序的运行速度。 总的来说,通过使用Autodesk AutoCAD API,我们可以实现对dxfdwg文件的读取和展示,并可以在应用程序中添加自定义样式和交互功能以满足用户需求。这种技术应用广泛,是制图行业和工业设计的重要组成部分。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值