Skip to content

Commit d3ae0cc

Browse files
committed
bug fix in centroid filter
1 parent da9d5b5 commit d3ae0cc

9 files changed

Lines changed: 59 additions & 60 deletions

File tree

staccato-collections/landsat8/src/main/java/com/planet/staccato/landsat8/Landsat8.java

Lines changed: 21 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -12,71 +12,48 @@
1212
*/
1313
public interface Landsat8 {
1414

15-
1615
@Subcatalog
1716
@Mapping(type = MappingType.KEYWORD)
1817
@JsonAlias("wrs_path")
1918
@JsonProperty("landsat:wrs_path")
20-
String getWrsPath();
21-
void setWrsPath(String wrsPath);
19+
Integer getWrsPath();
20+
void setWrsPath(Integer wrsPath);
2221

2322
@Subcatalog
2423
@Mapping(type = MappingType.KEYWORD)
2524
@JsonAlias("wrs_row")
2625
@JsonProperty("landsat:wrs_row")
27-
String getWrsRow();
28-
void setWrsRow(String wrsRow);
26+
Integer getWrsRow();
27+
void setWrsRow(Integer wrsRow);
2928

3029
@JsonAlias("earth_sun_distance")
3130
@JsonProperty("landsat:earth_sun_distance")
3231
Double getEarthSunDistance();
3332
void setEarthSunDistance(Double earthSunDistance);
3433

35-
@JsonAlias("geometric_rmse_model")
36-
@JsonProperty("landsat:geometric_rmse_model")
37-
Double getGeometricRmseModel();
38-
void setGeometricRmseModel(Double geometricRmseModel);
39-
40-
@JsonAlias("ground_control_points_verify")
41-
@JsonProperty("landsat:ground_control_points_verify")
42-
Double getGroundControlPointsVerify();
43-
void setGroundControlPointsVerify(Double groundControlPointsVerify);
44-
45-
@JsonAlias("ground_control_points_model")
46-
@JsonProperty("landsat:ground_control_points_model")
47-
String getGroundControlPointsModel();
48-
void setGroundControlPointsModel(String groundControlPointsModel);
34+
@JsonAlias("image_quality_oli")
35+
@JsonProperty("landsat:image_quality_oli")
36+
Integer getImageQualityOli();
37+
void setImageQualityOli(Integer imageQualityOli);
4938

5039
@JsonAlias("image_quality_tirs")
5140
@JsonProperty("landsat:image_quality_tirs")
52-
String getImageQualityTirs();
53-
void setImageQualityTirs(String imageQualityTirs);
54-
55-
@JsonAlias("geometric_rmse_model_x")
56-
@JsonProperty("landsat:geometric_rmse_model_x")
57-
String getGeometricRmseModelX();
58-
void setGeometricRmseModelX(String geometricRmseModelX);
59-
60-
@JsonAlias("geometric_rmse_model_y")
61-
@JsonProperty("landsat:geometric_rmse_model_y")
62-
String getGeometricRmseModelY();
63-
void setGeometricRmseModelY(String geometricRmseModelY);
41+
Integer getImageQualityTirs();
42+
void setImageQualityTirs(Integer imageQualityTirs);
6443

65-
@JsonAlias("geometric_rmse_verify")
66-
@JsonProperty("landsat:geometric_rmse_verify")
67-
String getGeometricRmseVerify();
68-
void setGeometricRmseVerify(String geometricRmseVerify);
69-
70-
@JsonAlias("image_quality_oli")
71-
@JsonProperty("landsat:image_quality_oli")
72-
String getImageQualityOli();
73-
void setImageQualityOli(String imageQualityOli);
44+
@Mapping(type = MappingType.KEYWORD)
45+
@JsonAlias("scene_id")
46+
@JsonProperty("landsat:scene_id")
47+
String getSceneId();
48+
void setSceneId(String sceneId);
7449

75-
@JsonAlias("entityId")
76-
@JsonProperty("landsat:entityId")
77-
String getEntityId();
78-
void setEntityId(String entityId);
50+
@Mapping(type = MappingType.KEYWORD)
51+
@JsonAlias("product_id")
52+
@JsonProperty("landsat:product_id")
53+
String getProductId();
54+
void setProductId(String productId);
7955

56+
@Mapping(type = MappingType.KEYWORD)
8057
@JsonAlias("processingLevel")
8158
@JsonProperty("landsat:processingLevel")
8259
String getProcessingLevel();

staccato-collections/landsat8/src/main/java/com/planet/staccato/landsat8/Landsat8ItemProperties.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,13 @@ public class Landsat8ItemProperties implements MandatoryProperties, Collection,
3838
private List<Band> bands;
3939

4040
// Landsat8
41-
private String wrsRow;
42-
private String wrsPath;
41+
private Integer wrsPath;
42+
private Integer wrsRow;
43+
private Integer imageQualityTirs;
44+
private Integer imageQualityOli;
4345
private Double earthSunDistance;
44-
private Double geometricRmseModel;
45-
private Double groundControlPointsVerify;
46-
private String groundControlPointsModel;
47-
private String imageQualityTirs;
48-
private String geometricRmseModelX;
49-
private String geometricRmseModelY;
50-
private String geometricRmseVerify;
51-
private String imageQualityOli;
52-
private String entityId;
46+
private String sceneId;
47+
private String productId;
5348
private String processingLevel;
5449
}
5550

staccato-commons/src/main/java/com/planet/staccato/extension/Collection.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.planet.staccato.extension;
22

3+
import com.planet.staccato.elasticsearch.annotation.Mapping;
4+
import com.planet.staccato.elasticsearch.annotation.MappingType;
5+
36
/**
47
* The "collection" field is typically found as part of the collection metadata. This is field can be useful to include
58
* in each item's properties as it defines the primary collection the item belongs to. This interface defines the
@@ -12,6 +15,7 @@
1215
*/
1316
public interface Collection {
1417

18+
@Mapping(type = MappingType.KEYWORD)
1519
String getCollection();
1620
void setCollection(String collection);
1721
}

staccato-commons/src/main/java/com/planet/staccato/extension/EO.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.planet.staccato.extension;
22

33
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.planet.staccato.elasticsearch.annotation.Mapping;
5+
import com.planet.staccato.elasticsearch.annotation.MappingType;
46
import lombok.Data;
57

68
import java.util.List;
@@ -13,14 +15,17 @@
1315
*/
1416
public interface EO {
1517

18+
@Mapping(type = MappingType.KEYWORD)
1619
@JsonProperty("eo:constellation")
1720
String getConstellation();
1821
void setConstellation(String constellation);
1922

23+
@Mapping(type = MappingType.KEYWORD)
2024
@JsonProperty("eo:platform")
2125
String getPlatform();
2226
void setPlatform(String platform);
2327

28+
@Mapping(type = MappingType.KEYWORD)
2429
@JsonProperty("eo:instrument")
2530
String getInstrument();
2631
void setInstrument(String instrument);
@@ -49,6 +54,7 @@ public interface EO {
4954
Double getSunElevation();
5055
void setSunElevation(Double sunElevation);
5156

57+
@Mapping(type = MappingType.KEYWORD)
5258
@JsonProperty("eo:epsg")
5359
String getEpsg();
5460
void setEpsg(String epsg);
@@ -60,8 +66,10 @@ public interface EO {
6066
@Data
6167
class Band {
6268

69+
@Mapping(type = MappingType.KEYWORD)
6370
private String id;
6471

72+
@Mapping(type = MappingType.KEYWORD)
6573
@JsonProperty("common_name")
6674
private String commmonName;
6775

@@ -77,11 +85,13 @@ public static Band build() {
7785
return new Band();
7886
}
7987

88+
@Mapping(type = MappingType.KEYWORD)
8089
public Band id(String id) {
8190
setId(id);
8291
return this;
8392
}
8493

94+
@Mapping(type = MappingType.KEYWORD)
8595
public Band commonName(String commonName) {
8696
setCommmonName(commonName);
8797
return this;

staccato-commons/src/main/java/com/planet/staccato/extension/SingleItem.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.planet.staccato.extension;
22

3+
import com.planet.staccato.elasticsearch.annotation.Mapping;
4+
import com.planet.staccato.elasticsearch.annotation.MappingType;
35
import com.planet.staccato.model.Provider;
46
import com.fasterxml.jackson.annotation.JsonProperty;
57

@@ -13,6 +15,7 @@
1315
*/
1416
public interface SingleItem {
1517

18+
@Mapping(type = MappingType.KEYWORD)
1619
@JsonProperty("item:license")
1720
String getLicense();
1821
void setLicense(String license);

staccato-commons/src/main/java/com/planet/staccato/model/Asset.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
@Data
1313
public class Asset {
1414

15+
1516
private String href;
1617
private String name;
1718
private String type;

staccato-elasticsearch/src/main/java/com/planet/staccato/es/config/ElasticsearchConfigProps.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public Mappings() {
5050
coreMappings.put("properties.collection", MappingType.KEYWORD);
5151
coreMappings.put("properties.datetime", MappingType.DATE);
5252
coreMappings.put("centroid", MappingType.GEO_POINT);
53+
5354
}
5455
}
5556
}

staccato-main/src/main/java/com/planet/staccato/catalog/CatalogConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Catalog rootCatalog() {
3434

3535
catalog.setId("staccato");
3636
catalog.setTitle("Staccato");
37-
catalog.setVersion("0.6.1");
37+
catalog.setVersion("0.6.2");
3838
catalog.setDescription("STAC v0.6.2 implementation by Planet Labs");
3939

4040
catalog.getLinks().add(Link.build()

staccato-main/src/main/java/com/planet/staccato/filter/CentroidBuilderFilter.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
import org.springframework.beans.factory.annotation.Autowired;
1212
import org.springframework.stereotype.Component;
1313

14-
import java.util.Arrays;
15-
import java.util.HashSet;
16-
import java.util.Set;
14+
import java.util.*;
1715

1816
/**
1917
* Automatically generates a centroid for any item being inserted/indexed in STAC. This is an unfortunate necessity
@@ -45,7 +43,17 @@ public Item doFilter(Item item) {
4543
private Item addCentroid(Item item) {
4644
if (item.getGeometry() != null) {
4745
try {
48-
Shape read = geoJsonReader.read(mapper.writeValueAsString(item.getGeometry()));
46+
47+
// if the geometry has the coordinates before the type, the spatial4j geojson reader will break
48+
// TODO so much ugly... has to be a better way to do this
49+
Map<String, Object> geometry = (LinkedHashMap<String, Object>)item.getGeometry();
50+
if (geometry.keySet().toArray(new String[]{})[0].equalsIgnoreCase("coordinates")) {
51+
LinkedHashMap<String, Object> sorted = new LinkedHashMap<>(2);
52+
sorted.put("type", geometry.get("type"));
53+
sorted.put("coordinates", geometry.get("coordinates"));
54+
geometry = sorted;
55+
}
56+
Shape read = geoJsonReader.read(mapper.writeValueAsString(geometry));
4957
Centroid centroid = new Centroid().lat(read.getCenter().getY()).lon(read.getCenter().getX());
5058
item.setCentroid(centroid);
5159
} catch (Exception ex) {

0 commit comments

Comments
 (0)