このdoctrine2拡張機能を機能させるのに非常に苦労しています。https://github.com/djlambert/doctrine2-spatialであり、ポリゴンの作成方法に関するドキュメントはあまりありません。構成ファイルが機能するようになりましたが、実際のポリゴンの作成に苦労しています。
array:564 [
0 => array:2 [
0 => -73.698313
1 => 45.546876
]
1 => array:2 [
0 => -73.69813
1 => 45.546916
]
2 => array:2 [
0 => -73.697656
1 => 45.546899
]
3 => array:2 [
0 => -73.697413
1 => 45.546899
]
$poly = new Polygon($array);
[CrEOF\Spatial\Exception\InvalidValueException]
Invalid Polygon Point value of type "double"
これは実際に発生するエラーです。どうやらダブルスが好きではないので、代わりにポイントを作成してみました。
$p = new Point($coord);
$temp[] = $p;
$poly = new Polygon($temp);
[CrEOF\Spatial\Exception\InvalidValueException]
Invalid Polygon LineString value of type "CrEOF\Spatial\PHP\Types\Geometry\Point"
その後、線の文字列オブジェクトを作成して渡します。
$line = new LineString($points);
$poly - new Polygon($line);
[Symfony\Component\Debug\Exception\ContextErrorException]
Catchable Fatal Error: Argument 1 passed to CrEOF\Spatial\PHP\Types\AbstractPolygon::__construct() must be of the type array, object given, called in /Library/Web Server/Documents/mg/src/Momoa/ImmobilierBundle/Entity/geography/Quartier.php on line 131 and defined
私は今迷っています。私が望んでいたのは、ポリゴンをデータベースに保存し、などの空間関数を呼び出すことだけでしたCONTAINS
。このすべてを機能させるための推奨事項やその他のことはありますか。
ソースコードを掘り下げた後、問題と思われるこの検証機能を見つけました
case (is_array($point) && count($point) == 2 && is_numeric($point[0]) && is_numeric($point[1])):
return array_values($point);
break;
default:
throw InvalidValueException::invalidType($this, GeometryInterface::POINT, $point);
}
私がこれを理解している方法は、拡張機能が小数値を持つポイントを受け入れないということです?! えっ、座標を 2 つの整数に変換する必要があるということですか?!