<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ひげろぐ &#187; 位置情報</title>
	<atom:link href="http://brass.to/blog/tag/%E4%BD%8D%E7%BD%AE%E6%83%85%E5%A0%B1/feed" rel="self" type="application/rss+xml" />
	<link>http://brass.to/blog</link>
	<description>技術者として仕事人としての思うところや覚え書きやらです</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:07:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>位置情報を扱うためのSpatial Adapter for Rails</title>
		<link>http://brass.to/blog/spatial-adapter-for-rails.html</link>
		<comments>http://brass.to/blog/spatial-adapter-for-rails.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 07:46:56 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[位置情報]]></category>

		<guid isPermaLink="false">http://brass.to/blog/?p=359</guid>
		<description><![CDATA[RailsでMySQLのgeometry型などを扱うためのちょいメモ。
Spatial Adapter for Railsを使うとマイグレーションとかでgeometry型を扱えるようになる。
geometry型とか絡むところは生のSQL書いてますよという場合でも、schema.rbにテーブル定義がちゃんと出力されるようになるので、それだけでも便利。
PostgreSQLでも使えるらしいです。
インストール
GeoRubyに依存しているのでまずGeoRubyを入れる。
READMEではgeorubyになっているが、これは情報が古いようだ。
sudo gem install GeoRuby
そのあとプラグインを入れる
ruby script/plugin install git://github.com/fragility/spatial_adapter.git
マイグレーション
マイグレーションは以下のように。
create_table :facilities, :options=>'ENGINE=MyISAM' do &#124;t&#124;
  t.string :name, :null => false, :limit => 50
  t.string :kana, :limit => 50
  t.column :latlng, :geometry, :null => false
end

add_index :facilities, :latlng, :spatial => true 
なつかしのt.columnを使わなくてはならないのは仕様っぽいです。
型は:geometryでも:pointでも。
インデックスを張るときは「:spatial => true」をつける。
なおMySQLのバージョンが5.0.16以下の場合はMyISAMにしないとダメ。
それより後のバージョンではInnoDBでも問題ない。
データの取得とか
作成
 Facility.create(:name => 'なめ', :kana => 'かな', :latlng => Point.from_x_y(43.194, 140.351))
取得
f = [...]]]></description>
			<content:encoded><![CDATA[<p>RailsでMySQLのgeometry型などを扱うためのちょいメモ。</p>
<p><a href="http://github.com/fragility/spatial_adapter">Spatial Adapter for Rails</a>を使うとマイグレーションとかでgeometry型を扱えるようになる。<br />
geometry型とか絡むところは生のSQL書いてますよという場合でも、schema.rbにテーブル定義がちゃんと出力されるようになるので、それだけでも便利。</p>
<p>PostgreSQLでも使えるらしいです。</p>
<h4>インストール</h4>
<p>GeoRubyに依存しているのでまずGeoRubyを入れる。<br />
READMEではgeorubyになっているが、これは情報が古いようだ。</p>
<pre><code>sudo gem install GeoRuby</code></pre>
<p>そのあとプラグインを入れる</p>
<pre><code>ruby script/plugin install git://github.com/fragility/spatial_adapter.git</code></pre>
<h4>マイグレーション</h4>
<p>マイグレーションは以下のように。</p>
<pre><code>create_table :facilities, :options=>'ENGINE=MyISAM' do |t|
  t.string :name, :null => false, :limit => 50
  t.string :kana, :limit => 50
  t.column :latlng, :geometry, :null => false
end

add_index :facilities, :latlng, :spatial => true </code></pre>
<p>なつかしのt.columnを使わなくてはならないのは仕様っぽいです。<br />
型は:geometryでも:pointでも。</p>
<p>インデックスを張るときは「:spatial => true」をつける。</p>
<p>なおMySQLのバージョンが5.0.16以下の場合はMyISAMにしないとダメ。<br />
それより後のバージョンではInnoDBでも問題ない。</p>
<h4>データの取得とか</h4>
<p>作成</p>
<pre><code> Facility.create(:name => 'なめ', :kana => 'かな', :latlng => Point.from_x_y(43.194, 140.351))</code></pre>
<p>取得</p>
<pre><code>f = Facility.find_by_latlng([[43, 140], [42, 141]])
fs = Facility.find_all_by_latlng([[43, 140], [42, 141]])</code></pre>
<p>参照</p>
<pre><code>f.latlng.x #=> 43.194
f.latlng.y #=> 140.351</code></pre>
<p>ほかREADME参照。</p>
]]></content:encoded>
			<wfw:commentRss>http://brass.to/blog/spatial-adapter-for-rails.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
