1
votes

I have installed below ,

  1. Neo4j Desktop IDE with neo4j version - 3.5.17
  2. Java version 8
  3. Spatial 0.26.2-neo4j-3.5.2

Try to import shape file to neo4j through cypher query,

call spatial.importShapefile("file:///home/.local/share/neo4j-relate/dbmss/dbms-3ad2b2c1-94c6-4482-8b1f-bcfe3f413670/import/cb_2019_us_state_500k.shp")

but it produces the error : Failed to invoke procedure spatial.importShapefile: Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.geotools.data.DataUtilities

how to fix this? Can anyone tell to solve this issues?

1

1 Answers

0
votes

Looks like you have also posted the question in Neo4j community. I have answered there, but going to answer here also.

Not sure, if this is resolved, but I was able to import the shapefile into the database. My Configuration -> Neo4j 3.5.20 Java Version 9 neo4j-spatial-0.26.2 Source of the shapefile -> https://www2.census.gov/geo/tiger/GENZ2019/shp/ ( i guess you are also using the same file). Make sure all the file like prj, dbf are on the same directory. (Its bin of neo4j)

Can you check if whitelisted and unrestricted spatial.* plugins in your configuration.

dbms.security.procedures.unrestricted=algo.*,apoc.*,spatial.*
dbms.security.procedures.whitelist=algo.*,apoc.*,spatial.*
> Directories in use:
>   home:         /root/neo4j-enterprise-3.5.20
>   config:       /root/neo4j-enterprise-3.5.20/conf
>   logs:         /root/neo4j-enterprise-3.5.20/logs
>   plugins:      /root/neo4j-enterprise-3.5.20/plugins
>   import:       /root/neo4j-enterprise-3.5.20/import
>   data:         /root/neo4j-enterprise-3.5.20/data
>   certificates: /root/neo4j-enterprise-3.5.20/certificates
>   run:          /root/neo4j-enterprise-3.5.20/run
> Starting Neo4j.
> WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
> 2020-12-29 12:13:14.593+0000 INFO  ======== Neo4j 3.5.20 ========
> 2020-12-29 12:13:14.603+0000 INFO  Starting...
> 2020-12-29 12:13:15.666+0000 INFO  Initiating metrics...
> 2020-12-29 12:13:15.667+0000 WARN  Exporting tool have been configured to report values to but no metrics were enabled. Disabling kernel metrics extension.
> 2020-12-29 12:13:30.513+0000 INFO  Bolt enabled on 0.0.0.0:7687.
> 2020-12-29 12:13:33.455+0000 INFO  Started.
> 2020-12-29 12:13:33.619+0000 INFO  Mounted REST API at: /db/manage
> 2020-12-29 12:13:33.679+0000 INFO  Loaded server plugin "SpatialPlugin"
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.addSimplePointLayer: add a new layer specialized at storing simple point location data
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.addNodesToLayer: adds many geometry nodes (about 10k-50k) to a layer, as long as the nodes contain the geometry information appropriate to this layer.
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.findClosestGeometries: search a layer for the closest geometries and return them.
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.addGeometryWKTToLayer: add a geometry specified in WKT format to a layer, encoding in the specified layers encoding schemea.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.findGeometriesWithinDistance: search a layer for geometries within a distance of a point. To achieve more complex CQL searches, pre-define the dynamic layer with addCQLDynamicLayer.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.addEditableLayer: add a new layer specialized at storing generic geometry data in WKB
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.addNodeToLayer: add a geometry node to a layer, as long as the node contains the geometry information appropriate to this layer.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.addCQLDynamicLayer: add a new dynamic layer exposing a filtered view of an existing layer
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.getLayer: find an existing layer
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.findGeometriesInBBox: search a layer for geometries in a bounding box. To achieve more complex CQL searches, pre-define the dynamic layer with addCQLDynamicLayer.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.findGeometriesIntersectingBBox: search a layer for geometries intersecting a bounding box. To achieve more complex CQL searches, pre-define the dynamic layer with addCQLDynamicLayer.
> 2020-12-29 12:13:35.085+0000 INFO  Remote interface available at http://localhost:7474/
**> info | inserted geometries: 56**
**> info | elapsed time in seconds: 0.329**

> info | inserted geometries: 56 > info | elapsed time in seconds: 0.329

> neo4j> match (n) return count(n);
> +----------+
> | count(n) |
> +----------+
> | 0        |
> +----------+
> 
> 1 row available after 152 ms, consumed after another 0 ms
> neo4j>
> neo4j> call spatial.importShapefile("cb_2019_us_state_500k.shp");
> info | inserted geometries: 56
> info | elapsed time in seconds: 0.338
> +-------+
> | count |
> +-------+
> | 56    |
> +-------+
> 
> 1 row available after 978 ms, consumed after another 0 ms
> neo4j> match (n) return count(n);
> +----------+
> | count(n) |
> +----------+
> | 60       |
> +----------+
> 
> 1 row available after 27 ms, consumed after another 1 ms

neo4j> call db.labels();
+-----------------+
| label           |
+-----------------+
| "ReferenceNode" |
+-----------------+


match (n) return (n) limit 2;
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| (:ReferenceNode {name: "spatial_root"})                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ({index_class: "org.neo4j.gis.spatial.index.LayerRTreeIndex", gtype: 6, layercrs: "GEOGCS[\"GCS_North_American_1983\",
  DATUM[\"D_North_American_1983\",
    SPHEROID[\"GRS_1980\", 6378137.0, 298.257222101]],
  PRIMEM[\"Greenwich\", 0.0],
  UNIT[\"degree\", 0.017453292519943295],
  AXIS[\"Longitude\", EAST],
  AXIS[\"Latitude\", NORTH]]", ctime: 1609244499209, layerprops: ["ID", "STATEFP", "STATENS", "AFFGEOID", "GEOID", "STUSPS", "NAME", "LSAD", "ALAND", "AWATER"], geomencoder: "org.neo4j.gis.spatial.WKBGeometryEncoder", layer_class: "org.neo4j.gis.spatial.EditableLayerImpl", layer: "cb_2019_us_state_500k"}) |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


Let me or the community forums group know if you need further more assistance.