RE: [OpenMap Users] Problem reading Shape file from a JAR

From: Fabrice Bouye <FabriceB_at_spc.int>
Date: Thu, 20 Aug 2009 13:11:56 +1100

> If you run the layer against a file with an absolute path, it will
> create an ssx file.

No, see below:

>> If I initiate a ShapeLayer using file on the disk,
>>[...]
>>The shape is loaded and displayed properly but I get this output
>>on the console:
>>
>> Creating spatial index file: C:/Fabriceb/Devel/GIS/shape/
>>World_EEZ_v3_20090430/World_Maritime_Boundaries_v3_20090430.ssx
>>
>>Even if no file is created in that directory whatsoever.

>You can also run the SpatialIndex class as an
> application on a shape file to create a ssx file (SpatialIndex will
> print a usage statement).

Thanks, I will try that.

----
Fabrice Bouyé (http://fabricebouye.cv.fm/)
Fisheries IT Specialist
Tel: +687 26 20 00 (Ext 411)
Oceanic Fisheries, Pacific Community
http://www.spc.int/


> -----Original Message-----
> From: Don Dietrick [mailto:dfdietrick_at_gmail.com]
> Sent: Thursday, August 20, 2009 11:33 AM
> To: Fabrice Bouye
> Subject: Re: [OpenMap Users] Problem reading Shape file from a JAR
>
> If you run the layer against a file with an absolute path, it will
> create an ssx file. You can also run the SpatialIndex class as an
> application on a shape file to create a ssx file (SpatialIndex will
> print a usage statement).
>
> -- Don
>
> On Aug 19, 2009, at 5:11 PM, "Fabrice Bouye" <FabriceB_at_spc.int> wrote:
>
> > Thanks for the quick reply.
> > How may I do that (since it does not create it himself despite the
> > message on the output)?
> >
> > ----
> > Fabrice Bouyé (http://fabricebouye.cv.fm/)
> > Fisheries IT Specialist
> > Tel: +687 26 20 00 (Ext 411)
> > Oceanic Fisheries, Pacific Community
> > http://www.spc.int/
> >
> >> -----Original Message-----
> >> From: Don Dietrick [mailto:dietrick_at_bbn.com]
> >> Sent: Thursday, August 20, 2009 12:42 AM
> >> To: Fabrice Bouye
> >> Cc: OpenMap Users
> >> Subject: Re: [OpenMap Users] Problem reading Shape file from a JAR
> >>
> >> Hi Fabrice,
> >>
> >> I think this is a bug in the SpatialIndex.MemoryIndex code. The
> >> ShapeLayer was updated so it that if a .ssx file isn't found, it'll
> >> create one and hold it in memory. It won't try to write it out to
> >> the
> >> file system. In order to create the MemoryIndex object, it's
> trying
> >> to instantiate a FileInputStream from the shape file name String,
> and
> >> I don't think that will work with a relative path. I'll fix it for
> >> the next version, but I think the only other workaround is to
> create
> >> an .ssx file and stick it in the jar.
> >>
> >> - Don
> >>
> >> On Aug 18, 2009, at 9:58 PM, Fabrice Bouye wrote:
> >>
> >>> Hi,
> >>> I am having trouble reading some shape files out of a JAR.
> >>>
> >>> I've got some shape files from
> http://www.vliz.be/vmdcdata/marbound/
> >>> which contain Worldwide EEZ definitions. Each "shape file" is spit
> >>> into 7 files (.dbf, .prj, .sbn, .sbx, .shp.xml, .shp and .shx) and
> >>> it's missing the .ssx file that comes with shape files provided
> with
> >>> OpenMap.
> >>>
> >>> If I initiate a ShapeLayer using file on the disk, somewhat
> similar
> >>> to (1st code is JavaFX, 2nd code is Java ; error happens similar
> on
> >>> both) :
> >>>
> >>> def shapeFile:String = "C:/Fabriceb/Devel/GIS/shape/
> >>> World_EEZ_v3_20090430/World_Maritime_Boundaries_v3_20090430.shp";
> >>> def properties:Properties = new Properties();
> >>> properties.setProperty("prettyName", "EEZ"); //NOI18N
> >>> properties.setProperty("shapeFile", shapeFile); //NOI18N
> >>> properties.setProperty("lineColor", "000000"); //NOI18N
> >>> def result:ShapeLayer = new ShapeLayer();
> >>> result.setProperties(properties);
> >>>
> >>> String shapeFile = "C:/Fabriceb/Devel/GIS/shape/
> >>> World_EEZ_v3_20090430/World_Maritime_Boundaries_v3_20090430.shp";
> >>> Properties properties = new Properties();
> >>> properties.setProperty("prettyName", "EEZ"); //NOI18N
> >>> properties.setProperty("shapeFile", shapeFile); //NOI18N
> >>> properties.setProperty("lineColor", "000000"); //NOI18N
> >>> ShapeLayer result = new ShapeLayer();
> >>> result.setProperties(properties);
> >>>
> >>> The shape is loaded and displayed properly but I get this output
> on
> >>> the console:
> >>>
> >>> Creating spatial index file: C:/Fabriceb/Devel/GIS/shape/
> >>> World_EEZ_v3_20090430/World_Maritime_Boundaries_v3_20090430.ssx
> >>> Even if no file is created in that directory whatsoever.
> >>>
> >>> If I use a path that points to a file in the JAR such as :
> >>>
> >>> def shapeFile:String = "org/spc/ofp/seapodym/view/ui/map/
> >>> resources/eez/World_Maritime_Boundaries_v3_20090430.shp";
> >>> def properties:Properties = new Properties();
> >>> properties.setProperty("prettyName", "EEZ");
> >>> properties.setProperty("shapeFile", shapeFile); //NOI18N
> >>> properties.setProperty("lineColor", "000000"); //NOI18N
> >>> def result:ShapeLayer = new ShapeLayer();
> >>> result.setProperties(properties);
> >>>
> >>> String shapeFile = " org/spc/ofp/seapodym/view/ui/map/resources/
> >>> eez/World_Maritime_Boundaries_v3_20090430.shp ";
> >>> Properties properties = new Properties();
> >>> properties.setProperty("prettyName", "EEZ"); //NOI18N
> >>> properties.setProperty("shapeFile", shapeFile); //NOI18N
> >>> properties.setProperty("lineColor", "000000"); //NOI18N
> >>> ShapeLayer result = new ShapeLayer();
> >>> result.setProperties(properties);
> >>>
> >>> I got that trace :
> >>>
> >>> java.io.FileNotFoundException: org\spc\ofp\seapodym\view\ui\map
> >>> \resources\eez\World_Maritime_Boundaries_v3_20090430.shp (The
> system
> >>> cannot find the path specified)
> >>> at java.io.FileInputStream.open(Native Method)
> >>> at java.io.FileInputStream.<init>(FileInputStream.java:106)
> >>> at java.io.FileInputStream.<init>(FileInputStream.java:66)
> >>> at com.bbn.openmap.layer.shape.SpatialIndex
> >>> $MemoryIndex.createIndex(SpatialIndex.java:1675)
> >>> at com.bbn.openmap.layer.shape.SpatialIndex
> >>> $MemoryIndex.create(SpatialIndex.java:1449)
> >>> at
> >>> com
> >>> .bbn
> >>>
> >> .openmap.layer.shape.SpatialIndex.readIndexFile(SpatialIndex.java:
> >> 769)
> >>> at
> >>> com
> >>> .bbn
> >>>
> >> .openmap.layer.shape.SpatialIndex.entryIterator(SpatialIndex.java:
> >> 727)
> >>> at
> >>> com
> >>> .bbn
> >>>
> >> .openmap.layer.shape.SpatialIndex.getOMGraphics(SpatialIndex.java:
> >> 526)
> >>> at
> >>>
> com.bbn.openmap.layer.shape.ShapeLayer.prepare(ShapeLayer.java:509)
> >>> at
> >>> com
> >>> .bbn
> >>> .openmap
> >>>
> >>
> .layer.policy.StandardRenderPolicy.prepare(StandardRenderPolicy.java:
> >>> 99)
> >>> at com.bbn.openmap.layer.OMGraphicHandlerLayer
> >>> $LayerWorker.construct(OMGraphicHandlerLayer.java:695)
> >>> at com.bbn.openmap.util.SwingWorker$2.run(SwingWorker.java:
> >>> 127)
> >>> at java.lang.Thread.run(Thread.java:619)
> >>> and that output:
> >>> EEZ|LayerWorker.construct(): null
> >>>
> >>> The trace is misleading as the path is good and further test using
> >>> the Shapfiles provided with OpenMap indicates this error happens
> >>> only because the .ssx file is missing and (probably) because
> OpenMap
> >>> cannot write into the directory within JAR to create it.
> >>> For example, if I recopy dcwpo-browse.ssx to the proper location
> and
> >>> rename it World_Maritime_Boundaries_v3_20090430.ssx, there is no
> >>> error anymore (but nothing is displayed of course).
> >>> On the other hand if I use dcwpo-browse.shp and dcwpo-browse.ssx,
> it
> >>> works good from a JAR but if I remove dcwpo-browse.ssx then I get
> a
> >>> similar java.io.FileNotFoundException on dcwpo-browse.shp (notice
> >>> the FileNotFoundException indicates that the .shp file is missing
> >>> instead of the .ssx).
> >>>
> >>> Is there any way to circumvent this issue? Would it be possible,
> >>> when using JAR and that the ssx is missing, to specify that the
> ssx
> >>> is to be created in as a TMP file or in the TMP folder instead?
> >>>
> >>> ----
> >>> Fabrice Bouyé (http://fabricebouye.cv.fm/)
> >>> Fisheries IT Specialist
> >>> Tel: +687 26 20 00 (Ext 411)
> >>> Oceanic Fisheries, Pacific Community
> >>> http://www.spc.int/
> >>>
> >>
> >
> > --
> > [To unsubscribe to this list send an email to "majdart_at_bbn.com"
> > with the following text in the BODY of the message "unsubscribe
> > openmap-users"]

--
[To unsubscribe to this list send an email to "majdart_at_bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Wed Aug 19 2009 - 22:12:52 EDT

This archive was generated by hypermail 2.3.0 : Tue Mar 28 2017 - 23:25:09 EDT