This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch geoparquet-filtering-and-simplification
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to
refs/heads/geoparquet-filtering-and-simplification by this push:
new 37b44ea3 Fix issues in group
37b44ea3 is described below
commit 37b44ea327b20850599c9d28f6eea13bcbc5550f
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Oct 12 13:23:44 2024 +0200
Fix issues in group
---
.../baremaps/geoparquet/GeoParquetGroup.java | 116 +++++++++------------
.../baremaps/geoparquet/GeoParquetReaderTest.java | 2 +-
2 files changed, 53 insertions(+), 65 deletions(-)
diff --git
a/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/GeoParquetGroup.java
b/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/GeoParquetGroup.java
index 35617447..36b6bbf4 100644
---
a/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/GeoParquetGroup.java
+++
b/baremaps-geoparquet/src/main/java/org/apache/baremaps/geoparquet/GeoParquetGroup.java
@@ -30,6 +30,7 @@ import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKBReader;
import org.locationtech.jts.io.WKBWriter;
+import org.locationtech.jts.io.WKTWriter;
/**
* A group of fields in a GeoParquet file.
@@ -225,48 +226,6 @@ public class GeoParquetGroup {
return new GeoParquetException(msg);
}
- public String toString() {
- return toString("");
- }
-
- public String toString(String indent) {
- StringBuilder builder = new StringBuilder();
- appendToString(builder, indent);
- return builder.toString();
- }
-
- private void appendToString(StringBuilder builder, String indent) {
- int i = 0;
- for (org.apache.parquet.schema.Type field : parquetSchema.getFields()) {
- String name = field.getName();
- Object object = data[i];
- ++i;
- if (object != null) {
- if (object instanceof List<?>values) {
- for (Object value : values) {
- builder.append(indent).append(name);
- if (value == null) {
- builder.append(": NULL\n");
- } else if (value instanceof GeoParquetGroup group) {
- builder.append('\n');
- group.appendToString(builder, indent + " ");
- } else {
- builder.append(": ").append(value).append('\n');
- }
- }
- } else {
- builder.append(indent).append(name);
- if (object instanceof GeoParquetGroup group) {
- builder.append('\n');
- group.appendToString(builder, indent + " ");
- } else {
- builder.append(": ").append(object).append('\n');
- }
- }
- }
- }
- }
-
public GeoParquetSchema getGeoParquetSchema() {
return geoParquetSchema;
}
@@ -280,30 +239,10 @@ public class GeoParquetGroup {
}
// Getter methods for different data types
- public String getString(int fieldIndex, int index) {
+ public String getStringValue(int fieldIndex, int index) {
return getBinaryValue(fieldIndex, index).toStringUsingUTF8();
}
- public int getInteger(int fieldIndex, int index) {
- return (int) getValue(fieldIndex, index);
- }
-
- public long getLong(int fieldIndex, int index) {
- return (long) getValue(fieldIndex, index);
- }
-
- public double getDouble(int fieldIndex, int index) {
- return (double) getValue(fieldIndex, index);
- }
-
- public float getFloat(int fieldIndex, int index) {
- return (float) getValue(fieldIndex, index);
- }
-
- public boolean getBoolean(int fieldIndex, int index) {
- return (boolean) getValue(fieldIndex, index);
- }
-
public Binary getBinaryValue(int fieldIndex, int index) {
return (Binary) getValue(fieldIndex, index);
}
@@ -343,7 +282,7 @@ public class GeoParquetGroup {
}
public String getStringValue(int fieldIndex) {
- return getString(fieldIndex, 0);
+ return getStringValue(fieldIndex, 0);
}
public Geometry getGeometryValue(int fieldIndex) {
@@ -514,4 +453,53 @@ public class GeoParquetGroup {
return getEnvelopeValues(parquetSchema.getFieldIndex(fieldName));
}
+ public String toString() {
+ return toString("");
+ }
+
+ private String toString(String indent) {
+ StringBuilder builder = new StringBuilder();
+ int fieldCount = parquetSchema.getFields().size();
+
+ for (int i = 0; i < fieldCount; i++) {
+ String fieldName = parquetSchema.getFieldName(i);
+ Object fieldValue = data[i];
+ if (fieldValue != null) {
+ appendFieldToString(builder, indent, fieldName, fieldValue);
+ }
+ }
+
+ return builder.toString();
+ }
+
+ private void appendFieldToString(StringBuilder builder, String indent,
String fieldName, Object fieldValue) {
+ if (fieldValue instanceof List<?> values) {
+ for (Object value : values) {
+ appendValueToString(builder, indent, fieldName, value);
+ }
+ } else {
+ appendValueToString(builder, indent, fieldName, fieldValue);
+ }
+ }
+
+ private void appendValueToString(StringBuilder builder, String indent,
String fieldName, Object value) {
+ builder.append(indent).append(fieldName);
+ if (value == null) {
+ builder.append(": NULL\n");
+ } else if (value instanceof GeoParquetGroup group) {
+ builder.append("\n").append(group.toString(indent + " "));
+ } else {
+ String valueString = getValueAsString(value);
+ builder.append(": ").append(valueString).append("\n");
+ }
+ }
+
+ private String getValueAsString(Object value) {
+ if (value instanceof Binary binary) {
+ return binary.toStringUsingUTF8();
+ } else {
+ return value.toString();
+ }
+ }
+
}
diff --git
a/baremaps-geoparquet/src/test/java/org/apache/baremaps/geoparquet/GeoParquetReaderTest.java
b/baremaps-geoparquet/src/test/java/org/apache/baremaps/geoparquet/GeoParquetReaderTest.java
index 849720a3..efda0f7a 100644
---
a/baremaps-geoparquet/src/test/java/org/apache/baremaps/geoparquet/GeoParquetReaderTest.java
+++
b/baremaps-geoparquet/src/test/java/org/apache/baremaps/geoparquet/GeoParquetReaderTest.java
@@ -30,7 +30,7 @@ class GeoParquetReaderTest {
void read() {
URI geoParquet = TestFiles.GEOPARQUET.toUri();
GeoParquetReader geoParquetReader = new GeoParquetReader(geoParquet);
- assertEquals(5, geoParquetReader.read().count());
+ assertEquals(5, geoParquetReader.read().peek(System.out::println).count());
}
@Test