示例#1
0
文件: Geometry.php 项目: Gnafu/wiz
    /**
     * Calcola il comune in cui cade la geometria data
     * @param string $wkt Geometria in WellKnownText format
     * @return array the result set (each array element represents a row of data). An empty array will be returned if the result contains no row. NULL is returned if ID is null.
     */
    public static function Get_City_State_ByWKT($wkt)
    {
        $wkt_geom = Geometry::Transform(Geometry::ST_GeomFromText($wkt), Yii::app()->params['geoserver']['citystate_layer_srid']);
        //Yii::log(print_r($wkt_geom, true) , CLogger::LEVEL_INFO, 'Get_City_State_ByWKT');  // DEBUG
        //return;
        $connection = Yii::app()->db;
        $sql = '
			SELECT confini_comunali.gid, confini_comunali.id, confini_comunali.nome, confini_comunali.the_geom
            FROM confini_comunali
            WHERE st_intersects(
            			confini_comunali.the_geom,
              			ST_Centroid(' . $wkt_geom . ')
                   		);';
        $command = $connection->createCommand($sql);
        $dataReader = $command->query();
        // calling read() repeatedly until it returns false
        //while(($row=$dataReader->read())!==false) { 		}
        // using foreach to traverse through every row of data
        //foreach($dataReader as $row) { }
        // retrieving all rows at once in a single array
        $rows = $dataReader->readAll();
        //Yii::log(print_r($rows) , CLogger::LEVEL_INFO, 'Query.DB');  // DEBUG
        if (count($rows) > 1) {
            return Geometry::Get_City_State_ByWKT_all($wkt);
        } else {
            return $rows;
        }
    }