Esri / Esri/geometry-api-java

OperatorImportFromESRIShape causes java.lang.OutOfMemoryError

Abierto
#146 3 comentarios 0 reacciones 0 asignados Ver en GitHub
question
Lenguaje dominante
Java
Estrellas
710
Forks
269
Merge medio
7 d 23 h
PR fusionados (30 d)
1

Descripción

Hi together,

currently I play arround with your geometry-api-java (version 1.2.1 from maven) to read an entire shape file and stumbled over the following issue:

```
java.lang.OutOfMemoryError: Java heap space
at com.esri.core.geometry.AttributeStreamOfInt32.(AttributeStreamOfInt32.java:61)
at com.esri.core.geometry.AttributeStreamBase.createIndexStream(AttributeStreamBase.java:465)
at com.esri.core.geometry.OperatorImportFromESRIShapeCursor.importFromESRIShapeMultiPath(OperatorImportFromESRIShapeCursor.java:268)
at com.esri.core.geometry.OperatorImportFromESRIShapeCursor.importFromESRIShape(OperatorImportFromESRIShapeCursor.java:190)
at com.esri.core.geometry.OperatorImportFromESRIShapeCursor.next(OperatorImportFromESRIShapeCursor.java:55)
at com.esri.core.geometry.ShapeUtilTest1.readShape(ShapeUtilTest1.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
```

The below snippet shows how I try to read the shape file.

```java
public List readShape(InputStream shape) throws IOException
{
List geometries = new ArrayList<>();

ByteBuffer bb = ByteBuffer.wrap(IOUtils.toByteArray(shape));

GeometryCursor cursor = OperatorImportFromESRIShape.local().execute(0,
Geometry.Type.Unknown, new SimpleByteBufferCursor(bb));

Geometry geometry;
while ((geometry = cursor.next()) != null)
{
geometries.add(geometry);
}

return geometries;
}
```

I Hope you can help me out with my problem. I also attached the shape file.

[data.zip](https://github.com/Esri/geometry-api-java/files/1280702/data.zip)

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Reproduce the failure with the attached data.zip and the readShape method in ShapeUtilTest1.java:68. Trace OperatorImportFromESRIShapeCursor.importFromESRIShapeMultiPath and AttributeStreamOfInt32, then determine what causes the heap exhaustion during cursor iteration. Done means the attached shape file can be imported without OutOfMemoryError, with the resulting geometries verified.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
data
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.