반응형
dxf 를 java를 통해 gml로 변환 후 리턴하는 Spring API 기능 예제이다.
일단 Kabeja 라이브러리를 다운로드 한다. (아래 링크)
https://sourceforge.net/projects/kabeja/
Kabeja
Download Kabeja for free. Kabeja is a java library for parsing DXF and converting to SVG (dxf2svg). The library supports the SAX-api and can integrated into other applications (Cocoon,Batik).
sourceforge.net
다운로드 받은 zip 파일을 압축 해제한 뒤 lib 폴더 안에 데이터를 해당 경로에 모두 붙여넣기 한다.
root/src/main/webapp/WEB-INF/lib
pom.xml 파일에 dependency 를 추가한다.
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>batik-all</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\batik-all.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>js</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\js.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>kabeja</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\kabeja-0.4.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>kabeja-svg</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\kabeja-svg-0.4.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>kabeja-xslt</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\kabeja-xslt.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>miethxml-toolkit</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\miethxml-toolkit.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>miethxml-ui</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\miethxml-ui.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>pdf-transcoder</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\pdf-transcoder.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>xml-apis-ext</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\xml-apis-ext.jar</systemPath>
</dependency>
<dependency>
<groupId>org.kabeja</groupId>
<artifactId>xml-apis</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\webapp\WEB-INF\lib\xml-apis.jar</systemPath>
</dependency>
dxf 파싱하는 자바단에서 kabeja 관련 라이브러리를 import 한다. (나머지는 ide auto import 기능을 사용..)
import org.kabeja.dxf.DXFArc;
import org.kabeja.dxf.DXFCircle;
import org.kabeja.dxf.DXFColor;
import org.kabeja.dxf.DXFDocument;
import org.kabeja.dxf.DXFEntity;
import org.kabeja.dxf.DXFInsert;
import org.kabeja.dxf.DXFLayer;
import org.kabeja.dxf.DXFLine;
import org.kabeja.dxf.DXFPoint;
import org.kabeja.dxf.DXFPolyline;
import org.kabeja.dxf.DXFText;
import org.kabeja.dxf.DXFVertex;
import org.kabeja.parser.ParseException;
import org.kabeja.parser.Parser;
import org.kabeja.parser.ParserBuilder;
업로드되서 받아온 dxf 파일을 gml 로 파싱해서 리턴하는 API 를 작성한다.
@RequestMapping(value = { "/map/dxfViewer.do" })
public void dxfViewer(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
EgovMap map = new EgovMap();
String dxfParsingString = "";
Map<String, MultipartFile> files = ((MultipartHttpServletRequest) request).getFileMap();
if (files.size() > 0) {
for (MultipartFile multipartFile : files.values()) {
if (!multipartFile.isEmpty()) {
// DECLARE THE LOCATION OF THE DXF FILE
// THIS MAY BE SUPPLIED AS A PARAMETER TO THE SERVLET
Parser parser = ParserBuilder.createDefaultParser();
StringBuilder buffer = new StringBuilder();
buffer.append("<wfs:FeatureCollection xmlns:ms=\"http://mapserver.gis.umn.edu/mapserver\" xmlns:wfs=\"http://www.opengis.net/wfs\">");
try {
InputStream in = null;
in = multipartFile.getInputStream();
// PARSE THE SUPPLIED DXF FILE
parser.parse(in, "utf-8");
// get the documnet and its layers
DXFDocument doc = parser.getDocument();
Iterator<?> lyrsIt = doc.getDXFLayerIterator();
int counter = 0;
// Loop through layers found
while (lyrsIt.hasNext()) {
DXFLayer layer = (DXFLayer) lyrsIt.next();
String lyrname = layer.getName();
int lyrcolor = layer.getColor();
String rgbcolor = DXFColor.getRGBString(lyrcolor);
String[] cols = rgbcolor.split(",");
// convert the layer color to hex color code
Color mycolor = new Color(Integer.parseInt(cols[0]), Integer.parseInt(cols[1]), Integer.parseInt(cols[2]));
String hex = "#" + Integer.toHexString(mycolor.getRGB()).substring(2);
Iterator<?> lyrTypesExist = layer.getDXFEntityTypeIterator();
while (lyrTypesExist.hasNext()) {
String type = (String) lyrTypesExist.next();
Iterator<?> entities = layer.getDXFEntities(type).iterator();
// loop through layer entities
while (entities.hasNext()) {
DXFEntity entity = (DXFEntity) entities.next();
String entType = entity.getType();
System.out.println("entType : " +entType);
if (entType.equals("LWPOLYLINE") || entType.equals("POLYLINE")) {
counter = counter + 1;
DXFPolyline poly = (DXFPolyline) entity;
int vertCount = poly.getVertexCount();
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:LineString srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE
+ "\"><gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
double startVertX = 0;
double startVertY = 0;
for (int i = 0; i < vertCount; i++) {
DXFVertex vertex = poly.getVertex(i);
double vertX = vertex.getPoint().getX();
double vertY = vertex.getPoint().getY();
if(i == 0){
startVertX = vertX;
startVertY = vertY;
}
buffer.append(vertX);
buffer.append(",");
buffer.append(vertY);
buffer.append(" ");
}
if(poly.isClosed()){
buffer.append(startVertX);
buffer.append(",");
buffer.append(startVertY);
buffer.append(" ");
}
buffer.append("</gml:coordinates></gml:LineString>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("<feature:lineType>");
buffer.append(poly.getLineType().toLowerCase());
buffer.append("</feature:lineType>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
}
if (entType.equals("LINE")) {
counter = counter + 1;
DXFLine line = (DXFLine) entity;
double vertX1 = line.getStartPoint().getX();
double vertY1 = line.getStartPoint().getY();
double vertX2 = line.getEndPoint().getX();
double vertY2 = line.getEndPoint().getY();
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:LineString srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE
+ "\"><gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(vertX1);
buffer.append(",");
buffer.append(vertY1);
buffer.append(" ");
buffer.append(vertX2);
buffer.append(",");
buffer.append(vertY2);
buffer.append(" ");
buffer.append("</gml:coordinates></gml:LineString>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("<feature:lineType>");
buffer.append(line.getLineType().toLowerCase());
buffer.append("</feature:lineType>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
}
if (entType.equals("POINT")) {
counter = counter + 1;
DXFPoint point = (DXFPoint) entity;
double pointX = point.getX();
double pointY = point.getY();
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:Point srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE
+ "\"><gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(pointX);
buffer.append(",");
buffer.append(pointY);
buffer.append(" ");
buffer.append("</gml:coordinates></gml:Point>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
}
if (entType.equals("TEXT")) {
counter = counter + 1;
DXFText text = (DXFText) entity;
double vertX = text.getInsertPoint().getX();
double vertY = text.getInsertPoint().getY();
String label = text.getText().replace("\"", " ");
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:Point srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE
+ "\"><gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(vertX);
buffer.append(",");
buffer.append(vertY);
buffer.append(" ");
buffer.append("</gml:coordinates></gml:Point>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(label);
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("<feature:rotation>");
buffer.append(text.getRotation());
buffer.append("</feature:rotation>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
}
if (entType.equals("INSERT")) {
counter = counter + 1;
DXFInsert insert = (DXFInsert) entity;
double pointX = insert.getPoint().getX();
double pointY = insert.getPoint().getY();
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:Point srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE
+ "\"><gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(pointX);
buffer.append(",");
buffer.append(pointY);
buffer.append(" ");
buffer.append("</gml:coordinates></gml:Point>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
}
if (entType.equals("ARC")) {
counter = counter + 1;
DXFArc arc = (DXFArc) entity;
double startPointX = arc.getStartPoint().getX();
double startPointY = arc.getStartPoint().getY();
double centerPointX = arc.getCenterPoint().getX();
double centerPointY = arc.getCenterPoint().getY();
double endPointX = arc.getEndPoint().getX();
double endPointY = arc.getEndPoint().getY();
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:Curve srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE + "\">");
buffer.append("<gml:segments>");
buffer.append("<gml:Arc srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE + "\">");
buffer.append("<gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(startPointX);
buffer.append(",");
buffer.append(startPointY);
buffer.append(" ");
buffer.append(centerPointX);
buffer.append(",");
buffer.append(centerPointY);
buffer.append(" ");
buffer.append(endPointX);
buffer.append(",");
buffer.append(endPointY);
buffer.append(" ");
buffer.append("</gml:coordinates>");
buffer.append("</gml:Arc>");
buffer.append("</gml:segments>");
buffer.append("</gml:Curve>");
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:CompositeCurve srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE + "\">");
buffer.append("<gml:curveMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:Curve srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE + "\">");
buffer.append("<gml:segments>");
buffer.append("<gml:Arc interpolation=\"circularArc3Points\">");
buffer.append("<gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(startPointX);
buffer.append(",");
buffer.append(startPointY);
buffer.append(" ");
buffer.append(centerPointX);
buffer.append(",");
buffer.append(centerPointY);
buffer.append(" ");
buffer.append(endPointX);
buffer.append(",");
buffer.append(endPointY);
buffer.append(" ");
buffer.append("</gml:coordinates>");
buffer.append("</gml:Arc>");
buffer.append("</gml:segments>");
buffer.append("</gml:Curve>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:curveMember>");
buffer.append("</gml:CompositeCurve>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:ArcByCenterPoint srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE + "\">");
buffer.append("<gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(centerPointX);
buffer.append(",");
buffer.append(centerPointY);
buffer.append(" ");
buffer.append("</gml:coordinates>");
buffer.append("<gml:radius uom=\"m\">");
buffer.append(arc.getRadius());
buffer.append("</gml:radius>");
buffer.append("<gml:startAngle uom=\"deg\">");
buffer.append(arc.getStartAngle());
buffer.append("</gml:startAngle>");
buffer.append("<gml:endAngle uom=\"deg\">");
buffer.append(arc.getEndAngle());
buffer.append("</gml:endAngle>");
buffer.append("</gml:ArcByCenterPoint>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
buffer.append("<gml:featureMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:LineString srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE
+ "\"><gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(startPointX);
buffer.append(",");
buffer.append(startPointY);
buffer.append(" ");
buffer.append(centerPointX);
buffer.append(",");
buffer.append(centerPointY);
buffer.append(" ");
buffer.append(endPointX);
buffer.append(",");
buffer.append(endPointY);
buffer.append(" ");
buffer.append("</gml:coordinates></gml:LineString>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:featureMember>");
}
if (entType.equals("CIRCLE")) {
counter = counter + 1;
DXFCircle circle = (DXFCircle) entity;
double centerPointX = circle.getCenterPoint().getX();
double centerPointY = circle.getCenterPoint().getY();
double radius = circle.getRadius();
buffer.append("<gml:curveMember xmlns:gml=\"http://www.opengis.net/gml\">");
buffer.append("<feature:features xmlns:feature=\"http://mapserver.gis.umn.edu/mapserver\" >");
buffer.append("<feature:geometry>");
buffer.append("<gml:Curve>");
buffer.append("<gml:segments>");
buffer.append("<gml:CircleByCenterPoint srsName=\"http://www.opengis.net/def/crs/EPSG/0/" + EPSG_CODE + "\">");
buffer.append("<gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\"\">");
buffer.append(centerPointX);
buffer.append(",");
buffer.append(centerPointY);
buffer.append(" ");
buffer.append("</gml:coordinates>");
buffer.append("<gml:radius uom=\"m\">");
buffer.append(radius);
buffer.append("</gml:radius>");
buffer.append("</gml:CircleByCenterPoint>");
buffer.append("</gml:segments>");
buffer.append("</gml:Curve>");
buffer.append("</feature:geometry>");
buffer.append("<feature:id>");
buffer.append(counter);
buffer.append("</feature:id>");
buffer.append("<feature:layername>");
buffer.append(lyrname);
buffer.append("</feature:layername>");
buffer.append("<feature:type>");
buffer.append(entType);
buffer.append("</feature:type>");
buffer.append("<feature:label>");
buffer.append(" ");
buffer.append("</feature:label>");
buffer.append("<feature:color>");
buffer.append(hex);
buffer.append("</feature:color>");
buffer.append("</feature:features>");
buffer.append("</gml:curveMember>");
}
if (entType.equals("HATCH") || entType.equals("LEADER")) {
counter = counter + 1;
}
}
}
}
buffer.append("</wfs:FeatureCollection>");
map.put("resultCode", this.propertiesService.getInt("SUCCESS"));
map.put("resultMsg", "SUCCESS");
} catch (ParseException e) {
e.printStackTrace();
map.put("resultCode", this.propertiesService.getInt("FAIL"));
map.put("resultMsg", "FAIL");
} catch (Exception e) {
e.printStackTrace();
map.put("resultCode", this.propertiesService.getInt("FAIL"));
map.put("resultMsg", "FAIL");
}
dxfParsingString = buffer.toString();
buffer.setLength(0); // flush it
}
}
}
response.setCharacterEncoding("utf-8");
response.setContentType("text/xml");
response.getWriter().println(dxfParsingString);
}
※ 위의 entType 에 대한 종류에 따라 더 많은 분기가 필요할 수도 있다. DXF 의 내용을 100% 호환할 수는 없다. 상황에 맞게 개발자가 수정해야한다.
위 API 결과로 Openlayers에서 GML2 로 파싱하면 벡터데이터로 지도상에 렌더링할 수 있게 된다.
반응형
'Spring' 카테고리의 다른 글
Geoserver 에 발행된 레이어 다운로드(.zip) (1) | 2021.06.06 |
---|