GIS

PHPでのOracle利用(20)──ジオメトリカラムカスタマイズ

条件を絞る事で、かなりの高速化が図れた。やはりOracleはタイトな利用かしっかりとした効率化を前提として運営しなければならないらしい アバウトの占める割合が他のDBに比べて狭いのだろう。そりゃ、解説も発売される高速化もある程度(それでも完全とは言…

PHPでのOracle利用(19)──形式指定検索式

戦慄の事実に気がつく。タイトルが統一されてる所為で、何書いたか訳がわからん 仕方ないので今週末は、順次タイトルの修正をすることにする そもそもカテゴリと内容が微妙に一致していない(php話題が存在しないにも関らずphpカテゴライズされてたり)のが問…

PHPでのOracle利用(18)──索引カスタマイズ(3)

CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX;こいつを CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('sdo_rtr_pctfree=0') PARALLEL;にしてみた。読み取りのみを考えて領域を確…

PHPでのOracle利用(17)──索引カスタマイズ(2)

色々と索引作成の折に出来る事を調べてみた CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX;まずはINDEXとUNIQUE INDEX INDEXを定義して作成すると、値が一意ではない索引に UNIQUE INDEXを定義すれば、値が一意な索引が出来上…

PHPでのOracle利用(16)──索引カスタマイズ(1)

次の問題はインサートの失敗──つまり、ジオメトリカラムの入力に制限が掛かってるらしいのでそれ──をどうにかする事 もう一つはDBの調整だ とりあえず、現状では格納されたデータを望む形に引き出して加工できるようになった。が、いざ有る程度の情報数を請…

PHPでのOracle利用(15)

AjaxにJSON形式で空間情報を引き渡している。その際にX座標の情報がブランクになる不具合の解決をごちゃごちゃと問題のブランクは、ポイント以外の複数個の座標を持つ空間情報で発生している模様 WKTの分割処理に問題がある様子。しかし、正常な処理と異常な…

PHPでのOracle利用(14)

テーブルには連続したid(整数)でジオメトリを流し込んだ 失敗したデータのidは飛ばされ、次のデータがインサートされる仕様 つまり前の行と連続しないidが振られた行は、失敗したデータの後ろ 以上の観点からこんなスクリプトを組んだ ※下記のスクリプトだと…

PHPでのOracle利用(13)

改めて、索引を消去して一からインサートし直してみた phpからインサートを発行しようとも思ったが、途中経過の確認が出来ない(出力をフラッシュに出来る技術力が無いから)のでPHPはインサートクエリが詰まったSQLファイルを生成するのに利用した 作成したsq…

PHPでのOracle利用(12)

正式な(というのも可笑しな話)テストデータをDBに突っ込んだ 50830件の空間データ。全件インサートに一時間以上掛かった… やはりMySQLが高速DBと言われているのは理解していたが、これほど速度に差異があるとは予想外だった。ホストサイドのCPUが上昇したま…

PHPでのOracle利用(11)

一旦、テーブルを綺麗に掃除してから新しくテストデータを格納する ・空間検索にヒットする空間 ・空間検索にヒットしない空間 ・空間検索の条件ぎりぎりの空間 この三種類の空間をポリゴン、ライン、マーカーで用意する。丁度、9個のデータが存在するという…

PHPでのOracle利用(10)

解決して、空間検索が戻ってくる形になったのでPHPスクリプトにて発行した 結果は下記 ちなみに、返された日本語が文字化けしている問題は文字コード変換で解決した。htmlentitiesはマルチバイトに対応してないのか、通した日本語が文字化けてしまい、二重に…

PHPでのOracle利用(9)

前回の問題解決 …原因はスペルミスorz USER_SDO_GEOM_METADATAに追加していたエントリーのジオメトリカラム名称を間違えていただけでした。geomをgoemとか書いてた…。これじゃジオムじゃなくてゴエム(笑 INSERT INTO user_sdo_geom_metadata (TABLE_NAME, CO…

PHPでのOracle利用(8)

問題となってるUSER_SDO_GEOM_METADATAというビューを探してみると、見当たらない! というか、ビューを利用しないと検索も出来ないのか… PostGISだと予め用意してあったようだがoracleだと自力。世知辛い世の中である ビューというもののお勉強から始める羽…

PHPでのOracle利用(7)

以下のようなクエリを組んで実行した CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INSEX;結果は ORA-29833: 索引タイプが存在しませんむう? 矢張り、テーブルの作り直しから始めなければならないのか oci8関数でもそうだったが、…

PHPでのOracle利用(6)

接続検索のスクリプトが完成したので、具体的なクエリーを当てはめる そう、空間検索だ とりあえず、以下のようなクエリを組んでみた SELECT SDO_UTIL.TO_WKTGEOMETRY(geom) FROM gis_t WHERE SDO_FILTER(SDO_UTIL.FROM_WKTGEOMETRY( 'POLYGON ((5.0 1.0, 8.…

PHPでのOracle利用(5)

問題解決 何の事は無い、定義が緩い所為で空回りしている部分があっただけだった 定義を強化して解決。ともすれば、nullだった場合の回避も盛り込むべきなのかもしれない こんな感じになった 2007/12/13 * * 参考 * * Oracleを空間DBにした情報引出し * * ス…

PHPでのOracle利用(4)

前回、呼び出したジオメトリ情報が Array ( [ID] => 1 [SDO_UTIL.TO_WKTGEOMETRY(GEOM)] => OCI-Lob Object ( [descriptor] => Resource id #5 ) )という風になっていて、肝心のWKTを習得出来ずに困惑した 今回は、これの解決問題のジオメトリ情報が格納され…

PHPでのOracle利用(3)

処理には問題なさそうだが、何故エラーが排出されているのか とりあえず SELECT * FROM gis_tというクエリが怪しいと色々こねくり回してみる とりあえず、全ての行に対しての指定を止めて名称で指定してみる SELECT id FROM gis_tすると… Array ( [ID] => 1 …

PHPでのOracle利用(2)

前回、接続が出来ないとか何とか言ってたがいつのまにやら完了 phpでの接続確認も完了した。以下その時のメモOracle関数は、他の関数に比べて少々毛色が違う印象だ 流れとしては 接続 ↓ クエリー発行 ↓ レスポンスの習得 ↓ 切断(開放)だが、クエリー発行の部…

OracleでもGIS(5)

設定をいじる前にちょっとした実験をしてみた 重複を許さない主キーが設定されているデーブルに対してOracle Enterprise Manager 10g Database ControlとSQL Plusで同じ主キーのインサート分を発行するのだ 先に発行したほうが通り、後が弾かれるか双方とも…

OracleでもGIS(4)

Oracle Enterprise Manager 10g Database ControlのiSQL*Plusでは(というか更新クエリを発行した場合は)デフォルトでロールバック処理が入る 具体的には、接続から切断を行わないとその間に発行された更新や新規は実際に反映されないという事。終了までの間…

OracleでもGIS(3)

データの格納に成功。ただし、ポリゴンとポイントのみ 格納されたジオメトリデータは以下の形式で格納されている様子 GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)む…わかりやすい…流石である ちなみに格納に利用したイン…

OracleでもGIS(2)

Oracle Enterprise Managerだが、どうもadmnという感じがしない むしろログの解析や状況の記録に特化した管理システムだと見受けられる。そりゃ、サーブレットで提供される代物である。OracleとしてはOracleが入れられたDBに別端末から管理できるように用意…

OracleでもGIS

なんだか、OracleのGIS資料が少ない。APIが明確で必要ないのか何なのか しかして、なんかリファレンス閲覧にはログインが要求されるみたいなんですけど…サポートする形式は以下の通り ・点および点クラスタ ・線ストリング ・N点ポリゴン ・円弧線ストリング…

MySQLでもジオメトラー(6)

従来のSQLでは空間にすべて収まっていない空間情報か返されなかった。そこでSQLの条件式を複雑にして、一部分のみ含まれている空間情報も返すようにした SELECT AsText(geom) FROM gis_t WHERE MBROverlaps(GeomFromText('LineString(<point>)'),geom) OR MBRContai</point>…

MySQLでもジオメトラー(5)

…と、いう訳で実際に触れてみた 途中、間違ってMySQLのシステムDBを消去して再インストとか大変に楽しい事象が勃発したが全スルーだまずはPostgreSQLの空間DBからタブを区切りとした"カラムデータのみ"のtxtファイルを作り出す 次にMySQLで空間DBを作成した…

MySQLでもジオメトラー(4)

次に、ポリゴン等の平面2Dを条件式にしたクエリーを考える SELECT AsText(geom) FROM testDB WHERE geom && GeomFromText('POLYGON((<point*5>))',4612)がPostGISでのクエリーだった。は座標が5個と考える事。区切りはカンマ 入力面倒なんで省略した んで、 SELECT As</point*5>…

MySQLでもジオメトラー(3)

最初に、GISとは関係ないけどメモ MySQL以外のDBにあるのかどうかは知らないが、MySQLにはテーブルにも型がある この型によって機能やシステムが変わってくる。デフォルトの型はMyISAM この機能はデフォルトだけあって、ご存じの通り では、ほかの型に何があ…

MySQLでもジオメトラー(2)

実際、MySQLでGISシステム──特にGoogleMapの様なシステム構築が出来るんだろうか? いや、技術的には可能だろう。が、明らかに使いづらそうだ PostGISと違ってMySQLの方はデフォルトパッケージらしいから、バージョンアップがスムーズに出来そうだが…。それだ…

MySQLでもジオメトラー

MySQLでもGISサポートをしているらしい ただし、こちらのジオメトリはPostGISと違ってコードが固定されている。方言的に定義されたジオメトリを利用するシステムには適合しないという事だ 基本的な構文は共通規格を利用している為、PostGISと大した変りはな…