`org.locationtech.jts.geom.TopologyException` が、見た目上「有効」なトポロジーで発生するのはなぜですか?

トピック作成者:ks-solruserml-bot (2024/12/28 18:55 投稿)
1
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/gv41hy30w8grcvy5d275j7964x282h6f into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは、皆さん。

以下のエラーが発生しています:

{
  "responseHeader": {
    "status": 400,
    "QTime": 62,
    "params": {
      "q": "*:*",
      "fq": "{!field f=geo_rpt v='Intersects(MULTIPOLYGON(((13.272047419856218 48.20342387325925,13.370237727473405 48.244137723977545,13.44302215130153 48.17504227627839,13.383970637629655 48.150768126725936,13.33865203411403 48.116856700661884,13.34139861614528 48.08842718090738,13.24801482708278 48.03289847303553,13.119912454984624 48.053979156872046,13.16347145983963 48.1264096711872,13.18060214893161 48.1543310774741,13.21356113330661 48.20011856948039,13.272047419856218 48.20342387325925)),((13.425127918007046 48.24513412358048,13.491045886757046 48.249706600761854,13.548724109413296 48.22272307592147,13.535677844764859 48.18931698246186,13.504092151405484 48.18611251356045,13.462893420936734 48.202132854489335,13.425814563514859 48.21906319722122,13.392855579139859 48.24239044104389,13.396288806678921 48.27393390506279,13.437487537147671 48.26982064390009,13.437487537147671 48.270277689268816,13.425127918007046 48.24513412358048))))'}"
    }
  },
  "error": {
    "metadata": [
      "error-class",
      "org.apache.solr.common.SolrException",
      "root-error-class",
      "org.locationtech.jts.geom.TopologyException"
    ],
    "msg": "Unable to parse shape given formats "lat,lon", "x y" or as WKT because java.text.ParseException: org.locationtech.jts.geom.TopologyException: side location conflict: arg 1 [ (13.437273381247506, 48.269842025120745, NaN) ] input: MULTIPOLYGON(((13.272047419856218 48.20342387325925,13.370237727473405 48.244137723977545,13.44302215130153 48.17504227627839,13.383970637629655 48.150768126725936,13.33865203411403 48.116856700661884,13.34139861614528 48.08842718090738,13.24801482708278 48.03289847303553,13.119912454984624 48.053979156872046,13.16347145983963 48.1264096711872,13.18060214893161 48.1543310774741,13.21356113330661 48.20011856948039,13.272047419856218 48.20342387325925)),((13.425127918007046 48.24513412358048,13.491045886757046 48.249706600761854,13.548724109413296 48.22272307592147,13.535677844764859 48.18931698246186,13.504092151405484 48.18611251356045,13.462893420936734 48.202132854489335,13.425814563514859 48.21906319722122,13.392855579139859 48.24239044104389,13.396288806678921 48.27393390506279,13.437487537147671 48.26982064390009,13.437487537147671 48.270277689268816,13.425127918007046 48.24513412358048)))",
    "code": 400
  }
}

入力されたジオメトリは有効に見えます。具体的には、以下が確認されています:

  • WKT をマップに正しくプロットできます。
  • 見つけたオンラインツールでは正しく動作します。

また、この WKT は 2 つのポリゴンを含むマルチポリゴンですが、各ポリゴンを個別にクエリに使用すると問題なく動作します。さらに、他のマルチポリゴンも正常に動作しています。

このエラーの原因について、どなたかアイデアはありますか?

よろしくお願いします。
Carlo

返信投稿者:ks-solruserml-bot (2024/12/28 18:55 投稿)

いいえ、ですがそれは本当に奇妙だと言いたいです。これは最終的には JTS(Java Topology Suite)の問題であり、場合によっては Spatial4j の問題であって、Solr の問題ではないと思います。最新の JTS を試してみる価値があるかもしれません。

問題を回避する方法として、複数の空間クエリ条件を使用してディスジャンクション(OR)を行い、すべてを1つの FQ にまとめる方法があります。以下のような形です(即興なので検証していません):

fq= $fq.p1 $fq.p2 &fq.p1={!.....}&fq.p2={!.....}

ここで、fq= の後にスペースを入れるのは、少し分かりづらい理由ですが重要です。

~ David Smiley

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2025 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?