Skip to content

Commit

Permalink
Version 1.4.0
Browse files Browse the repository at this point in the history
- Upgrade for PDI 9
- Add write to Geopackage, SVG and GPX
- Add read from Geopackage, GPX
- Other minor feature

Change-Id: I8705fb3fdfe3932beec285b82383f9b70f56e814
  • Loading branch information
raiAtol committed Aug 13, 2020
1 parent a9f6325 commit 0790087
Show file tree
Hide file tree
Showing 312 changed files with 35,450 additions and 1,091 deletions.
755 changes: 492 additions & 263 deletions dxf/src/main/java/com/atolcd/gis/dxf/DXFReader.java

Large diffs are not rendered by default.

92 changes: 92 additions & 0 deletions dxf/src/main/java/com/atolcd/gis/dxf/DXFWriter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package com.atolcd.gis.dxf;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.vividsolutions.jts.geom.Envelope;

import fr.michaelm.jump.drivers.dxf.DxfENTITY;
import fr.michaelm.jump.drivers.dxf.DxfFile;
import fr.michaelm.jump.drivers.dxf.DxfXDATA;

public class DXFWriter {

private String dxfFileName;
private List<Layer> layers;

public DXFWriter(String fileName) {

int pointIndex = fileName.lastIndexOf('.');
if (pointIndex > 0) {
fileName = fileName.substring(0,pointIndex);
}

this.dxfFileName = fileName.concat(".dxf");
this.layers = new ArrayList<Layer>();

}

public void addLayer(Layer layer){
this.layers.add(layer);
}

public void write(int precision, boolean writeXData) throws IOException{

List<String> layerNames = new ArrayList<String>();
Envelope extent = null;
List<DxfENTITY> entities = new ArrayList<DxfENTITY>();

for(Layer layer : this.layers){

//Alimente la liste des layers
layerNames.add(layer.getName());

//Calcul de l'extent globale
for (Entity entity:layer.getEntities()){

if(extent != null){
extent.expandToInclude(entity.getGeometry().getEnvelopeInternal());
}else{
extent = entity.getGeometry().getEnvelopeInternal();
}


//Conversion Entity -> DxfEntity
DxfENTITY dxfENTITY = new DxfENTITY(layer.getName(), entity.getGeometry());

for(ExtendedData extendedData : entity.getExtendedData()){

int code;

if(extendedData.getType().equals(String.class)){
code = DxfXDATA.GROUPCODE_XDATA_STRING;

}else if(extendedData.getType().equals(Double.class)){
code = DxfXDATA.GROUPCODE_XDATA_REAL;

}else if(extendedData.getType().equals(Integer.class)){
code = DxfXDATA.GROUPCODE_XDATA_INTEGER;

}else if(extendedData.getType().equals(Long.class)){
code = DxfXDATA.GROUPCODE_XDATA_LONG;

}else{
code = DxfXDATA.GROUPCODE_XDATA_STRING;
}

dxfENTITY.addXData(new DxfXDATA(extendedData.getName(), code, extendedData.getValue()));

}

entities.add(dxfENTITY);

}

}

DxfFile.write(this.dxfFileName, layerNames, extent, entities ,precision, writeXData);

}

}
37 changes: 34 additions & 3 deletions dxf/src/main/java/com/atolcd/gis/dxf/Entity.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.atolcd.gis.dxf;

import java.util.ArrayList;
import java.util.List;

import com.vividsolutions.jts.geom.Geometry;

public class Entity {
Expand All @@ -12,10 +15,22 @@ public class Entity {
public static String TYPE_CIRCLE = "CIRCLE";
public static String TYPE_ELLIPSE = "ELLIPSE";
public static String TYPE_ARC = "ARC";
public static String TYPE_BLOCK = "BLOCK";
public static String TYPE_POINT = "POINT";

private String id;
private Geometry geometry;
private String type;
private String text;
private List<ExtendedData> extendedData;

private Geometry geometry;
private String type;
private String text;
public Entity(String id, Geometry geometry,String type, String text){
this.id = id;
this.geometry = geometry;
this.type = type;
this.text = text;
this.extendedData = new ArrayList<ExtendedData>();
}

public Geometry getGeometry() {
return geometry;
Expand All @@ -41,4 +56,20 @@ public void setText(String text) {
this.text = text;
}

public List<ExtendedData> getExtendedData() {
return extendedData;
}

public void AddExtendedData(ExtendedData extendedData){
this.getExtendedData().add(extendedData);
}

public void AddExtendedData(String name, Class<?> type, Object value){
this.getExtendedData().add(new ExtendedData(name, type, value));
}

public String getId() {
return id;
}

}
39 changes: 39 additions & 0 deletions dxf/src/main/java/com/atolcd/gis/dxf/ExtendedData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.atolcd.gis.dxf;

public class ExtendedData {

private String name;
private Class<?> type;
private Object value;

public ExtendedData(String name,Class<?> type, Object value) {
this.name = name;
this.type = type;
this.value = value;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Class<?> getType() {
return type;
}

public void setType(Class<?> type) {
this.type = type;
}

public Object getValue() {
return value;
}

public void setValue(Object value) {
this.value = value;
}

}
2 changes: 1 addition & 1 deletion dxf/src/main/java/com/atolcd/gis/dxf/Layer.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class Layer {
private String name;
private List<Entity> entities;

protected Layer(String name) {
public Layer(String name) {
this.name = name;
this.entities = new ArrayList<Entity>();
}
Expand Down
Loading

0 comments on commit 0790087

Please sign in to comment.