CAD中DWF(DXF)数据在GIS上的应用
对于CAD中生成DWG数据处理方法的二种方式
一、Acrgis 工具转换
首先安装Acrgis软件(网上有很多安装教程,这里就不详细说了)
安装以后在Acrgis中加载DWG数据
打开后,会发现所有数据都能正常显示,但是数据量太多无法寻找自己需要的数据。
这时候,利用Acrgis中识别功能选中你需要的数据
在属性表中选中数据,单独导出shp 数据即可得到单独的
导出成shp数据后可通过geoserver发布出来看看对比效果
基本上是一致
到这一步基本上就完成了DWG数据提取的步骤了
PS:由于DWG中的的坐标系不存在,这里需要再Acrgis中自定义坐标,如果还需要匹配
你的其它影像tif坐标,这里需要Acrgis的仿射变换,下期我在讲解。
二、JAVA代码实现
Java 中 有各一个 kabeja库,可以将CAD(DXF)转换输出格式(JPEG,PNG,SVG,TIFF,PDF,XML)
使用非常简单
导入Kabeja 0.4库https://download.****.net/download/imaniy/10930243
放置resources,更新Maven就可以直接引用了
测试代码
public class CAD2PDF {
public static void main(String[] args) throws FileNotFoundException, ParseException, SAXException, org.xml.sax.SAXException {
//InputStream in = new FileInputStream("C:/Users/Admin/Desktop/svg/draft.dxf");
// Parser dxfParser = DXFParserBuilder.createDefaultParser();
Parser dxfParser = ParserBuilder.createDefaultParser();
dxfParser.parse(new FileInputStream("C:\\Users\\dell\\Desktop\\03-等高线.dxf"), "UTF-8");//需要转换的dxf
DXFDocument doc = dxfParser.getDocument();
SAXGenerator generator = new SVGGenerator();
// generate into outputstream
// 输出SVG
// SAXSerializer out = new SAXXMLSerializer();
// 输出pdf
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXPDFSerializer();
// 输出tiff
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXTIFFSerializer();
// 输出png
SAXSerializer out =new SAXTIFFSerializer();
// SAXPNGSerializer
// 输出jpg
// org.kabeja.xml.SAXSerialzer out =
// org.kabeja.batik.tools.SAXJEPGSerializer();
OutputStream fileo = new FileOutputStream("C:\\Users\\dell\\Desktop\\caidiandimao.tif");//转换所得的文件
// out.setOutputStream(response.getOutputStream()) //write direct to
// ServletResponse
//设置输出分辨率
Map m = new HashMap();
m.put("dpi","300");
m.put("width","10000");
m.put("height","18000");
out.setProperties(m);
out.setOutput(fileo);
generator.generate(doc, out, new HashMap());
}
}
然后将导出数据,在Acrgis中验证
数据无误以后可以直接使用,可以发布geoserver发布
从ACD中导出的时间,都会出现坐标系不匹配的问题,下一篇我会在讲解