合併市区町村

ブログ | 2008/4/23 14:36
コメント欄に書き込まれていたいくつか読み込み住所データベースを更新しました。

少し合理的なチェックを考えよう。
・合併市区町村の旧市区町村名のデータベースをつくる(手作業&登録式)
・それと市区町村名を照らし合わせて、マッチする一覧ページを作る
・それらのマップデータの市区町村名だけを一括変換。
・ついでに読み込み住所DBもチェック。

広域で地図を表示した時の、マーカーのパース

ブログ | 2008/4/10 18:41
mysqlのスロークエリーログを見ていたら、マーカーのパースでいくつか。

ベースのクエリーは概ねこんな感じ
SELECT *,(ABS(m.lat-$centerY) + ABS(m.lng-$centerX)) d FROM map m WHERE m.lat between '$minY' AND '$maxY' AND m.lng between '$minX' AND '$maxX' ORDER BY d LIMIT 200;
$maxX
$minX
$maxY
$minY
は、Javascriptからajaxで投げてくる。$minY > $maxXの時は補正を追加したり。

で、ズームレベルが10以下くらいの広域の時。
対象マーカーが数万個ということになってしまい、ORDER BY dにかなり時間がかかる(1.5秒とか)。

$zrv = 0.4;
$maxX = $centerX + $zrv;
$minX = $centerX - $zrv;
$maxY = $centerY + $zrv;
$minY = $centerY - $zrv;

地図全部をみないで、中心からある程度範囲で絞る補正を入れる。
ボストマップの場合、0.4で都内だと5000個、地方で300個くらいが対象になるようなので、とりあえず0.4にしてみた。5000個くらいであれば、0.1秒程なので、ストレスはなさそう。

激速になった。(今比)

ブログ | 2008/4/4 02:58
テストで今あるデータベースを移植してみて、いろいろ動かしてみたら激重。

MySQLを検証。とにかくソートが遅い。

Aというtableに10万件。(mapデータ)
Bというtableに20万件。(nodeデータ)

こいつをwhereで等価結合して、ソート。
Bのフィールドでソートすると、10秒とか20秒とか30秒とか掛かる。
Aのフィールドでソートすると、コンマゼロ何秒でいけたりする。

LEFT JOINとかWHEREの抽出内容とか、いろいろやってみるも何も変わらない。とにかくAでソートするのだ。たぶん小さい方ということだ。重複にはなるけれども、ソートに使うフィールドは、Aに(も)作るべし。

今のポストマップは見るに耐えられないスピードなので早くリニューアルしたい。けれど、やることはまだ結構ある。

ポストマップの開発系雑記をここに書いてみる

ブログ | 2008/4/2 21:24
Rottelの姑息なプロモーションの一環として。

さて、ポストマップはリニューアル作業中。ヘビーなユーザーさんも結構ついているし、あれやこれや追加してきた機能があるので、なかなかハード。

残りをtodoにリストアップできるくらいだから、見えてきてはいるけれど、細かいところを追求すると切りがないからほどほどに。

マップ表示など、いくつかはけっこうブラッシュアップできた。
ログ関係の細かい調整は、リ・リリース後に持ち越そう。

残りの大きいところは、
・検索
・タグ絞り込み・タグ候補
・重複チェック
・ライトボックスのナビ
あたりか。

最後の山に、データの移行か。

こんなことを書いている間に進めればいいのに。
ほんとそうだ。
| 1 | 2 | 次

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close