springboot + mongodbによる緯度経度座標による平坦地マッチング方式
2022-01-19 03:21:52
java apiにはmongodbエンティティが付属していますが、トーラス多角形の面積にマッチしないので(おそらく正しい方法を使わなかったから)、空間座標のタイプをカスタマイズする必要があります。
さっそくですが、コードは以下の通りです。
/**
*
* @author cy
*/
@Configuration
@ReadingConverter
public class CustomReadGeoJsonConverter implements Converter<Document, CustomGeoJson> {
@Override
public CustomGeoJson convert(Document document) {
CustomGeoJson geoJson = new CustomGeoJson();
geoJson.setType(document.get(GeoJsonConstant.TYPE, String.class));
geoJson.setCoordinates(document.get(GeoJsonConstant.COORDINATES, Iterable.class));
return geoJson;
}
}
@Configuration
public class Config {
@Autowired
private CustomReadGeoJsonConverter customReadGeoJsonConverter;
@Bean
public MongoCustomConversions customConversions() {
List<Converter<? , ? >> converterList = new ArrayList<>();
converterList.add(customReadGeoJsonConverter);
return new MongoCustomConversions(converterList);
}
}
エンティティに挿入されるカスタム空間座標タイプ
座標をポイントにカスタム挿入できるところ
/**
* @author cy
*/
@Data
public class CustomGeoJson implements GeoJson, Serializable {
private String type;
private Iterable<? > coordinates;
}
定義したmongodbエンティティにカスタムタイプを追加します。
/**
* @author cy
* @since 2021-10-20
*/
@Data
@Document(collection = "demo_mdb")
public class DemoMdb implements Serializable {
private String id;
@GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
private CustomGeoJson customGeoJson;
}
データを挿入する
public void saveData() {
// custom point point collection here (no fixed format here refer to mongdb official documentation)
List<List<Point>> pointList = new ArrayList<>();
DemoMdb db = new DemoMdb();
// check the type needed by yourself
db.setType("***");
db.setCoordinates(pointList);
//mongoTemplate introduces itself without going into detail
mongoTemplate.insert(db, DemoMdb .class);
}
クエリデータ
/**
** longitude x latitude y
**/
public List<DemoMdb> findData(String x, String y) {
Query query = new Query(Criteria.where("customGeoJson").
intersects(new GeoJsonPoint(Double.valueOf(x), Double.valueOf(y))));
List<DemoMdb> dbList = mongoTemplate.find(query, DemoMdb.class);
return dbList;
}
まだ完璧ではありませんが、一つの方法です。
この記事はspringboot + mongodbの緯度経度座標による平坦地のマッチング方法についてです、より関連するspringboot mongodbの緯度と経度の内容は、スクリプトハウスの過去の記事を検索するか、次の関連記事を閲覧し続けることを願ってあなたは将来的にもっとスクリプトハウスをサポートします!.
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン