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

Public Member Functions

 ESRIJSONWriter (String epsg)
 
ExtendedIterator< Resource > write (Model model, HttpServletResponse response) throws IOException
 
JSONObject handleGeometry (Geometry geom, String epsgcode)
 
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

GeoJSONWriter writer =new GeoJSONWriter()
 
Double lon
 

Constructor & Destructor Documentation

◆ ESRIJSONWriter()

ESRIJSONWriter ( String  epsg)
26  {
27  super(epsg);
28  // TODO Auto-generated constructor stub
29  }
String epsg
Definition: GeoModelWriter.java:30

References GeoModelWriter.epsg.

Member Function Documentation

◆ handleGeometry() [1/2]

JSONObject handleGeometry ( Geometry  geom,
String  epsgcode 
)
113  {
114  if(epsgcode==null)
115  epsgcode="4326";
116  JSONObject result=new JSONObject();
117  if(geom.getGeometryType().equalsIgnoreCase("Point")) {
118  result.put("x", geom.getCoordinate().getX());
119  result.put("y", geom.getCoordinate().getY());
120  result.put("wkid", epsgcode);
121  }
122  if(geom.getGeometryType().equalsIgnoreCase("LineString")) {
123  org.wololo.geojson.Geometry obj=writer.write(geom);
124  JSONObject objj=new JSONObject(obj.toString());
125  result.put("paths", objj.getJSONArray("coordinates"));
126  result.put("wkid", epsgcode);
127  }
128  if(geom.getGeometryType().equalsIgnoreCase("Polygon")) {
129  org.wololo.geojson.Geometry obj=writer.write(geom);
130  JSONObject objj=new JSONObject(obj.toString());
131  result.put("rings", objj.getJSONArray("coordinates"));
132  result.put("wkid", epsgcode);
133  }
134  if(geom.getGeometryType().equalsIgnoreCase("MultiPoint")) {
135  org.wololo.geojson.Geometry obj=writer.write(geom);
136  JSONObject objj=new JSONObject(obj.toString());
137  result.put("points", objj.getJSONArray("coordinates"));
138  result.put("wkid", epsgcode);
139  }
140  return result;
141  }
Geometry geom
Definition: GeoModelWriter.java:36
GeoJSONWriter writer
Definition: ESRIJSONWriter.java:24

References GeoModelWriter.geom, and ESRIJSONWriter.writer.

Referenced by ESRIJSONWriter.write().

◆ handleGeometry() [2/2]

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
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.

32  {
33  JSONObject geojson=new JSONObject();
34  ExtendedIterator<Resource> it=super.write(model, response);
35  if(!it.hasNext()) {
36  it=model.listResourcesWithProperty(model.createProperty("http://www.w3.org/2000/01/rdf-schema#label"));
37  while(it.hasNext()) {
38  Resource ind=it.next();
39  StmtIterator it2 = ind.listProperties();
40  while(it2.hasNext()) {
41  Statement curst=it2.next();
42  if(geojson.has(curst.getPredicate().toString())) {
43  if(geojson.optJSONArray(curst.getPredicate().toString())!=null) {
44  geojson.getJSONArray(curst.getPredicate().toString()).put(curst.getObject().toString());
45  }else {
46  JSONArray arr=new JSONArray();
47  arr.put(curst.getObject().toString());
48  geojson.put(curst.getPredicate().toString(),arr);
49  }
50  }else {
51  geojson.put(curst.getPredicate().toString(),curst.getObject().toString());
52  }
53  }
54  }
55  }else {
56  JSONArray features=new JSONArray();
57  geojson.put("features",features);
58  while(it.hasNext()) {
59  Resource ind=it.next();
60  StmtIterator it2 = ind.listProperties();
61  JSONObject curfeature=new JSONObject();
62  features.put(curfeature);
63  curfeature.put("id",ind.getURI());
64  curfeature.put("type","Feature");
65  JSONObject properties=new JSONObject();
66  curfeature.put("attributes",properties);
67  Double lat=null,lon=null;
68  if(ind.hasProperty(GEO.EPSG)) {
69  sourceCRS="EPSG:"+ind.getProperty(GEO.EPSG).getObject().asLiteral().getValue().toString();
70  }
71  while(it2.hasNext()) {
72  Statement curst=it2.next();
73  Tuple<Boolean,String> handled=this.handleGeometry(curst, ind, model);
74  if(!handled.getOne()) {
75  if(properties.has(curst.getPredicate().toString())) {
76  if(properties.optJSONArray(curst.getPredicate().toString())!=null) {
77  properties.getJSONArray(curst.getPredicate().toString()).put(curst.getObject().toString());
78  }else {
79  JSONArray arr=new JSONArray();
80  arr.put(curst.getObject().toString());
81  properties.put(curst.getPredicate().toString(),arr);
82  }
83  }else {
84  properties.put(curst.getPredicate().toString(),curst.getObject().toString());
85  }
86  }
87  if(geom!=null) {
88  curfeature.put("geometry",handleGeometry(geom,this.epsg));
89  geom=null;
90  }
91  if(lon!=null && lat!=null) {
92  JSONObject geeo=new JSONObject();
93  geeo.put("x",lon);
94  geeo.put("y",lat);
95  curfeature.put("geometry",geeo);
96  }
97  }
98  }
99  }
100  try {
101  response.getWriter().write(geojson.toString(2));
102  response.getWriter().close();
103  } catch (JSONException e) {
104  // TODO Auto-generated catch block
105  e.printStackTrace();
106  } catch (IOException e) {
107  // TODO Auto-generated catch block
108  e.printStackTrace();
109  }
110  return null;
111  }
JSONObject handleGeometry(Geometry geom, String epsgcode)
Definition: ESRIJSONWriter.java:113

References GeoModelWriter.epsg, GEO.EPSG, GeoModelWriter.geom, Tuple< T, T2 >.getOne(), ESRIJSONWriter.handleGeometry(), GeoModelWriter.lat, GeoModelWriter.lon, and GeoModelWriter.sourceCRS.

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().

◆ geom

◆ lat

◆ lon

◆ reader

◆ sourceCRS

◆ styleformatter

◆ styleObject

StyleObject styleObject
protectedinherited

◆ usedProperty

Property usedProperty =null
protectedinherited

◆ writer

GeoJSONWriter writer =new GeoJSONWriter()
package