GeoPubby  Version 0.1.0.0
MapMLWriter Class Reference
Inheritance diagram for MapMLWriter:
Collaboration diagram for MapMLWriter:

Public Member Functions

 MapMLWriter (String epsg)
 
ExtendedIterator< Resource > write (Model model, HttpServletResponse response) throws IOException
 
Tuple< Boolean, String > handleGeometry (Statement curst, Resource ind, Model model)
 

Static Public Member Functions

static StyleObject handleStyle (Resource res)
 

Protected Attributes

String epsg =null
 
Double lat
 
String sourceCRS ="EPSG:4326"
 
Geometry geom
 
GridCoverage cov
 
StyleObject styleObject
 
ResultStyleFormatter styleformatter
 
Property usedProperty =null
 
WKTReader reader =new WKTReader()
 

Package Attributes

GeometryFactory fac = new GeometryFactory()
 
Double lon
 

Constructor & Destructor Documentation

◆ MapMLWriter()

MapMLWriter ( String  epsg)
33  {
34  super(epsg);
35  }
String epsg
Definition: GeoModelWriter.java:30

References GeoModelWriter.epsg.

Member Function Documentation

◆ handleGeometry()

Tuple<Boolean,String> handleGeometry ( Statement  curst,
Resource  ind,
Model  model 
)
inherited
148  {
149  boolean handled=false;
150  String type="vector";
151  if (GEO.ASWKT.getURI().equals(curst.getPredicate().getURI().toString())
152  || GEO.P_GEOMETRY.getURI().equals(curst.getPredicate().getURI())
153  || GEO.P625.getURI().equals(curst.getPredicate().getURI())) {
154  try {
155  geom = reader.read(curst.getObject().asLiteral().getString());
156  if(this.epsg!=null) {
157  geom=ReprojectionUtils.reproject(geom, sourceCRS, epsg);
158  }
159  } catch (ParseException e) {
160  // TODO Auto-generated catch block
161  e.printStackTrace();
162  }
163  handled=true;
164  } else if (GEO.ASGEOJSON.getURI().equals(curst.getPredicate().getURI().toString())
165  && this.epsg != null) {
166  if (curst.getObject().asLiteral().getString() != null) {
167  GeoJSONReader read = new GeoJSONReader();
168  geom = read.read(curst.getObject().asLiteral().getString());
169  if(this.epsg!=null) {
170  ind.addProperty(GEO.EPSG, model.createTypedLiteral(this.epsg));
171  geom = ReprojectionUtils.reproject(geom, sourceCRS, epsg);
172  }
173  }
174  handled=true;
175  } else if (GEO.ASKML.getURI().equals(curst.getPredicate().getURI().toString())
176  && this.epsg != null) {
177  if (curst.getObject().asLiteral().getString() != null) {
178  KMLReader read = new KMLReader();
179  try {
180  geom = read.read(curst.getObject().asLiteral().getString());
181  if(this.epsg!=null) {
182  ind.addProperty(GEO.EPSG, model.createTypedLiteral(this.epsg));
183  geom = ReprojectionUtils.reproject(geom, sourceCRS, epsg);
184  }
185  } catch (ParseException e) {
186  // TODO Auto-generated catch block
187  e.printStackTrace();
188  }
189  }
190  handled=true;
191  } else if (GEO.ASWKB.getURI().equals(curst.getPredicate().getURI().toString())
192  && this.epsg != null) {
193  if (curst.getObject().asLiteral().getString() != null) {
194  WKBReader wkbread=new WKBReader();
195  try {
196  geom = wkbread.read(curst.getObject().asLiteral().getString().getBytes());
197  if(this.epsg!=null) {
198  ind.addProperty(GEO.EPSG, model.createTypedLiteral(this.epsg));
199  geom = ReprojectionUtils.reproject(geom, sourceCRS, epsg);
200  }
201  } catch (ParseException e) {
202  // TODO Auto-generated catch block
203  e.printStackTrace();
204  }
205  }
206  handled=true;
207  } else if (GEO.ASHEXWKB.getURI().equals(curst.getPredicate().getURI().toString())
208  && this.epsg != null) {
209  if (curst.getObject().asLiteral().getString() != null) {
210  WKBReader wkbread=new WKBReader();
211  try {
212  geom = wkbread.read(WKBReader.hexToBytes(curst.getObject().asLiteral().getString()));
213  if(this.epsg!=null) {
214  ind.addProperty(GEO.EPSG, model.createTypedLiteral(this.epsg));
215  geom = ReprojectionUtils.reproject(geom, sourceCRS, epsg);
216  }
217  } catch (ParseException e) {
218  // TODO Auto-generated catch block
219  e.printStackTrace();
220  }
221  }
222  handled=true;
223  }else if (GEO.ASGML.getURI().equals(curst.getPredicate().getURI().toString())
224  && this.epsg != null) {
225  if (curst.getObject().asLiteral().getString() != null) {
226  GMLReader reader=new GMLReader();
227  try {
228  geom=reader.read(curst.getObject().asLiteral().getString(), new GeometryFactory());
229  if(this.epsg!=null) {
230  ind.addProperty(GEO.EPSG, model.createTypedLiteral(this.epsg));
231  geom = ReprojectionUtils.reproject(geom, sourceCRS, epsg);
232  }
233  } catch (SAXException | IOException | ParserConfigurationException e) {
234  // TODO Auto-generated catch block
235  e.printStackTrace();
236  }
237  }
238  handled=true;
239  }else if (GEO.P_LAT.getURI().equals(curst.getPredicate().getURI().toString())) {
240  lat = curst.getObject().asLiteral().getDouble();
241  handled=true;
242  } else if (GEO.P_LONG.getURI().equals(curst.getPredicate().getURI().toString())) {
243  lon = curst.getObject().asLiteral().getDouble();
244  handled=true;
245  } else if (GEO.GEORSSPOINT.getURI().equals(curst.getPredicate().getURI().toString())) {
246  lat = Double.valueOf(curst.getObject().asLiteral().getString().split(" ")[0]);
247  lon = Double.valueOf(curst.getObject().asLiteral().getString().split(" ")[1]);
248  handled=true;
249  }
250  return new Tuple<Boolean,String>(handled,type);
251  }
String sourceCRS
Definition: GeoModelWriter.java:34
Geometry geom
Definition: GeoModelWriter.java:36
Double lon
Definition: GeoModelWriter.java:32
Double lat
Definition: GeoModelWriter.java:32
WKTReader reader
Definition: ModelWriter.java:22

References GEO.ASGEOJSON, GEO.ASGML, GEO.ASHEXWKB, GEO.ASKML, GEO.ASWKB, GEO.ASWKT, GeoModelWriter.epsg, GEO.EPSG, GeoModelWriter.geom, GEO.GEORSSPOINT, GeoModelWriter.lat, GeoModelWriter.lon, GEO.P625, GEO.P_GEOMETRY, GEO.P_LAT, GEO.P_LONG, ModelWriter.reader, ReprojectionUtils.reproject(), and GeoModelWriter.sourceCRS.

Referenced by AbstractGeoJSONWriter.prepareGeoJSONString(), CoverageJSONWriter.write(), X3DWriter.write(), XYZASCIIWriter.write(), EWKTWriter.write(), GeoHashWriter.write(), GeoURIWriter.write(), GMLWriter.write(), GoogleMapsLinkWriter.write(), GPXWriter.write(), KMLWriter.write(), LatLonTextWriter.write(), MapMLWriter.write(), OpenLocationCodeWriter.write(), OSMLinkWriter.write(), OSMWriter.write(), SVGWriter.write(), TopoJSONWriter.write(), TWKBWriterr.write(), WKBWriterr.write(), WKTWriter.write(), XLSWriter.write(), and XLSXWriter.write().

◆ handleStyle()

static StyleObject handleStyle ( Resource  res)
staticinherited
52  {
53  StyleObject result=new StyleObject();
54  if(res.isURIResource()){
55  result.styleId=res.getURI().toString();
56  }
57  if(res.hasProperty(RDFS.label)){
58  result.styleName= res.getProperty(RDFS.label).getLiteral().getString();
59  }
60  if(res.hasProperty(GEO.POINTSTYLE)){
61  result.pointStyle=res.getProperty(GEO.POINTSTYLE).getLiteral().getString();
62  }
63  if(res.hasProperty(GEO.POINTIMAGE)){
64  result.pointImage=res.getProperty(GEO.POINTIMAGE).getLiteral().getString();
65  }
66  if(res.hasProperty(GEO.LINESTRINGSTYLE)){
67  result.lineStringStyle=res.getProperty(GEO.LINESTRINGSTYLE).getLiteral().getString();
68  }
69  if(res.hasProperty(GEO.LINESTRINGIMAGE)){
70  result.lineStringImage=res.getProperty(GEO.LINESTRINGIMAGE).getLiteral().getString();
71  }
72  if(res.hasProperty(GEO.LINESTRINGIMAGESTYLE)){
73  result.lineStringImageStyle=res.getProperty(GEO.LINESTRINGIMAGESTYLE).getLiteral().getString();
74  }
75  if(res.hasProperty(GEO.POLYGONSTYLE)){
76  result.polygonStyle=res.getProperty(GEO.POLYGONSTYLE).getLiteral().getString();
77  }
78  if(res.hasProperty(GEO.POLYGONIMAGE)){
79  result.polygonImage=res.getProperty(GEO.POLYGONIMAGE).getLiteral().getString();
80  }
81  if(res.hasProperty(GEO.HATCH)){
82  result.hatch=res.getProperty(GEO.HATCH).getLiteral().getString();
83  }
84  if(res.hasProperty(GEO.POPUPSTYLE)){
85  result.hatch=res.getProperty(GEO.POPUPSTYLE).getLiteral().getString();
86  }
87  if(res.hasProperty(GEO.TEXTSTYLE2)){
88  result.hatch=res.getProperty(GEO.TEXTSTYLE2).getLiteral().getString();
89  }
90  if(res.hasProperty(GEO.POINTSTYLE2)){
91  result.pointStyle=res.getProperty(GEO.POINTSTYLE2).getLiteral().getString();
92  }
93  if(res.hasProperty(GEO.POINTIMAGE2)){
94  result.pointImage=res.getProperty(GEO.POINTIMAGE2).getLiteral().getString();
95  }
96  if(res.hasProperty(GEO.LINESTRINGSTYLE2)){
97  result.lineStringStyle=res.getProperty(GEO.LINESTRINGSTYLE2).getLiteral().getString();
98  }
99  if(res.hasProperty(GEO.LINESTRINGIMAGE2)){
100  result.lineStringImage=res.getProperty(GEO.LINESTRINGIMAGE2).getLiteral().getString();
101  }
102  if(res.hasProperty(GEO.LINESTRINGIMAGESTYLE2)){
103  result.lineStringImageStyle=res.getProperty(GEO.LINESTRINGIMAGESTYLE2).getLiteral().getString();
104  }
105  if(res.hasProperty(GEO.POLYGONSTYLE2)){
106  result.polygonStyle=res.getProperty(GEO.POLYGONSTYLE2).getLiteral().getString();
107  }
108  if(res.hasProperty(GEO.POLYGONIMAGE2)){
109  result.polygonImage=res.getProperty(GEO.POLYGONIMAGE2).getLiteral().getString();
110  }
111  if(res.hasProperty(GEO.HATCH2)){
112  result.hatch=res.getProperty(GEO.HATCH2).getLiteral().getString();
113  }
114  if(res.hasProperty(GEO.POPUPSTYLE2)){
115  result.hatch=res.getProperty(GEO.POPUPSTYLE2).getLiteral().getString();
116  }
117  if(res.hasProperty(GEO.TEXTSTYLE2)){
118  result.hatch=res.getProperty(GEO.TEXTSTYLE2).getLiteral().getString();
119  }
120  if(res.hasProperty(GEO.POINTSTYLE2)){
121  result.pointStyle=res.getProperty(GEO.POINTSTYLE2).getLiteral().getString();
122  }
123  if(res.hasProperty(GEO.POINTIMAGE2)){
124  result.pointImage=res.getProperty(GEO.POINTIMAGE2).getLiteral().getString();
125  }
126  if(res.hasProperty(GEO.LINESTRINGSTYLE2)){
127  result.lineStringStyle=res.getProperty(GEO.LINESTRINGSTYLE2).getLiteral().getString();
128  }
129  if(res.hasProperty(GEO.LINESTRINGIMAGE2)){
130  result.lineStringImage=res.getProperty(GEO.LINESTRINGIMAGE2).getLiteral().getString();
131  }
132  if(res.hasProperty(GEO.LINESTRINGIMAGESTYLE2)){
133  result.lineStringImageStyle=res.getProperty(GEO.LINESTRINGIMAGESTYLE2).getLiteral().getString();
134  }
135  if(res.hasProperty(GEO.POLYGONSTYLE2)){
136  result.polygonStyle=res.getProperty(GEO.POLYGONSTYLE2).getLiteral().getString();
137  }
138  if(res.hasProperty(GEO.POLYGONIMAGE2)){
139  result.polygonImage=res.getProperty(GEO.POLYGONIMAGE2).getLiteral().getString();
140  }
141  if(res.hasProperty(GEO.HATCH2)){
142  result.polygonImage=res.getProperty(GEO.HATCH2).getLiteral().getString();
143  }
144  return result;
145  }

References StyleObject.hatch, GEO.HATCH, GEO.HATCH2, StyleObject.lineStringImage, GEO.LINESTRINGIMAGE, GEO.LINESTRINGIMAGE2, StyleObject.lineStringImageStyle, GEO.LINESTRINGIMAGESTYLE, GEO.LINESTRINGIMAGESTYLE2, StyleObject.lineStringStyle, GEO.LINESTRINGSTYLE, GEO.LINESTRINGSTYLE2, StyleObject.pointImage, GEO.POINTIMAGE, GEO.POINTIMAGE2, StyleObject.pointStyle, GEO.POINTSTYLE, GEO.POINTSTYLE2, StyleObject.polygonImage, GEO.POLYGONIMAGE, GEO.POLYGONIMAGE2, StyleObject.polygonStyle, GEO.POLYGONSTYLE, GEO.POLYGONSTYLE2, GEO.POPUPSTYLE, GEO.POPUPSTYLE2, StyleObject.styleId, StyleObject.styleName, and GEO.TEXTSTYLE2.

Referenced by ResourceDescription.getStyle(), AbstractGeoJSONWriter.prepareGeoJSONString(), and KMLWriter.write().

◆ write()

ExtendedIterator<Resource> write ( Model  model,
HttpServletResponse  response 
) throws IOException

Reimplemented from ModelWriter.

38  {
39  ExtendedIterator<Resource> it = super.write(model, response);
40  if (!it.hasNext()) {
41  response.getWriter().write("");
42  response.getWriter().close();
43  } else {
44  XMLOutputFactory factory = XMLOutputFactory.newInstance();
45  StringWriter strwriter = new StringWriter();
46  try {
47  XMLStreamWriter writer = new IndentingXMLStreamWriter(factory.createXMLStreamWriter(strwriter));
48  writer.writeStartDocument();
49  writer.writeStartElement("mapml");
50  writer.writeStartElement("head");
51  writer.writeStartElement("title");
52  writer.writeEndElement();
53  writer.writeEndElement();
54  writer.writeStartElement("body");
55  it.close();
56  it = model.listResourcesWithProperty(usedProperty);
57  Integer countgeoms = 0;
58  Resource ind = it.next();
59  if(ind.hasProperty(GEO.EPSG)) {
60  sourceCRS="EPSG:"+ind.getProperty(GEO.EPSG).getObject().asLiteral().getValue().toString();
61  }
62  writer.writeStartElement("feature");
63  writer.writeAttribute("id", ind.getURI());
64  writer.writeAttribute("itemscope", "itemscope");
65  writer.writeStartElement("properties");
66  writer.writeStartElement("div");
67  writer.writeAttribute("class", "table-container");
68  writer.writeStartElement("table");
69  writer.writeStartElement("caption");
70  writer.writeCharacters("Feature Properties");
71  writer.writeStartElement("tbody");
72  StmtIterator it2 = ind.listProperties();
73  List<Geometry> geoms = new LinkedList<Geometry>();
74  while (it2.hasNext()) {
75  Statement curst = it2.next();
76  Tuple<Boolean,String> handled=this.handleGeometry(curst, ind, model);
77  if(!handled.getOne()){
78  String last = curst.getPredicate().toString()
79  .substring(curst.getPredicate().toString().lastIndexOf('/') + 1);
80  writer.writeStartElement("th");
81  writer.writeAttribute("scope", "row");
82  writer.writeCharacters(last);
83  writer.writeEndElement();
84  if (curst.getObject().toString().contains("^^")) {
85  writer.writeStartElement("td");
86  writer.writeAttribute("itemprop", last);
87  writer.writeCharacters(curst.getObject().toString().substring(0,
88  curst.getObject().toString().lastIndexOf("^^")));
89  writer.writeEndElement();
90  } else {
91  writer.writeStartElement("td");
92  writer.writeAttribute("itemprop", last);
93  writer.writeCharacters(curst.getObject().toString());
94  writer.writeEndElement();
95  }
96  }
97  if (lon != null && lat != null) {
98  Geometry point = fac.createPoint(
99  new Coordinate(Double.valueOf(lon.toString()), Double.valueOf(lat.toString())));
100  if(this.epsg!=null) {
101  point=ReprojectionUtils.reproject(point, sourceCRS, epsg);
102  }
103  geoms.add(point);
104  lat = null;
105  lon = null;
106  countgeoms++;
107  }
108  }
109  writer.writeEndElement();
110  writer.writeEndElement();
111  writer.writeEndElement();
112  writer.writeEndElement();
113  writer.writeEndElement();
114  writer.writeStartElement("geometry");
115  for (Geometry geom : geoms) {
116  writer.writeStartElement(geom.getGeometryType());
117  writer.writeStartElement("coordinates");
118  for (Coordinate coord : geom.getCoordinates()) {
119  writer.writeCharacters(coord.getX() + " " + coord.getY() + " ");
120  }
121  writer.writeEndElement();
122  writer.writeEndElement();
123  }
124  writer.writeEndElement();
125  writer.writeEndElement();
126  writer.writeEndElement();
127  writer.writeEndElement();
128  writer.writeEndDocument();
129  writer.flush();
130  } catch (XMLStreamException e1) {
131  // TODO Auto-generated catch block
132  e1.printStackTrace();
133  }
134  response.getWriter().write(strwriter.toString());
135  response.getWriter().close();
136  }
137 
138  return null;
139  }
Tuple< Boolean, String > handleGeometry(Statement curst, Resource ind, Model model)
Definition: GeoModelWriter.java:148
Property usedProperty
Definition: ModelWriter.java:20
GeometryFactory fac
Definition: MapMLWriter.java:31

References GeoModelWriter.epsg, GEO.EPSG, MapMLWriter.fac, GeoModelWriter.geom, Tuple< T, T2 >.getOne(), GeoModelWriter.handleGeometry(), GeoModelWriter.lat, GeoModelWriter.lon, ReprojectionUtils.reproject(), GeoModelWriter.sourceCRS, and ModelWriter.usedProperty.

Member Data Documentation

◆ cov

GridCoverage cov
protectedinherited

◆ epsg

String epsg =null
protectedinherited

Referenced by AbstractGeoJSONWriter.AbstractGeoJSONWriter(), CoverageJSONWriter.CoverageJSONWriter(), CSVWriter.CSVWriter(), CypherWriter.CypherWriter(), ESRIJSONWriter.ESRIJSONWriter(), EWKTWriter.EWKTWriter(), EXIJSONWriter.EXIJSONWriter(), GDFWriter.GDFWriter(), GeobufWriter.GeobufWriter(), GeoHashWriter.GeoHashWriter(), GeoJSONLDWriter.GeoJSONLDWriter(), GeoJSONWriterr.GeoJSONWriterr(), GeoModelWriter.GeoModelWriter(), GeoURIWriter.GeoURIWriter(), GEXFWriter.GEXFWriter(), GMLWriter.GMLWriter(), GoogleMapsLinkWriter.GoogleMapsLinkWriter(), GPXWriter.GPXWriter(), GraphMLWriter.GraphMLWriter(), GRASSVectorASCIIWriter.GRASSVectorASCIIWriter(), GXLWriter.GXLWriter(), GeoModelWriter.handleGeometry(), HexTuplesWriter.HexTuplesWriter(), JSONPWriter.JSONPWriter(), KMLWriter.KMLWriter(), LatLonTextWriter.LatLonTextWriter(), LDWriter.LDWriter(), MapMLWriter.MapMLWriter(), OpenLocationCodeWriter.OpenLocationCodeWriter(), OSMLinkWriter.OSMLinkWriter(), OSMWriter.OSMWriter(), SHPWriter.SHPWriter(), SVGWriter.SVGWriter(), TGFWriter.TGFWriter(), TLPWriter.TLPWriter(), TopoJSONWriter.TopoJSONWriter(), TWKBWriterr.TWKBWriterr(), WKBRasterWriter.WKBRasterWriter(), WKBWriterr.WKBWriterr(), WKTWriter.WKTWriter(), X3DWriter.write(), XYZASCIIWriter.write(), ESRIJSONWriter.write(), EWKTWriter.write(), GeoURIWriter.write(), GoogleMapsLinkWriter.write(), GPXWriter.write(), MapMLWriter.write(), OSMLinkWriter.write(), TWKBWriterr.write(), WKBWriterr.write(), WKTWriter.write(), XLSWriter.write(), XLSXWriter.write(), LDWriter.write(), X3DWriter.X3DWriter(), XLSWriter.XLSWriter(), XLSXWriter.XLSXWriter(), XYZASCIIWriter.XYZASCIIWriter(), and YAMLWriter.YAMLWriter().

◆ fac

GeometryFactory fac = new GeometryFactory()
package

Referenced by MapMLWriter.write().

◆ geom

◆ lat

◆ lon

◆ reader

◆ sourceCRS

◆ styleformatter

◆ styleObject

StyleObject styleObject
protectedinherited

◆ usedProperty

Property usedProperty =null
protectedinherited