• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Google Mapsを利用して屋根の面積を求たい)

Google Mapsを利用して屋根の面積を求める方法

このQ&Aのポイント
  • Google MapsのAPIを利用して自宅の屋根の面積を求める方法を教えてください。
  • エクリプス3.7とアンドロイドSDKの開発環境を用意していますが、GoogleのAPIを利用して自宅の屋根の面積を求める方法がわかりません。サンプルコードや参考になる情報などがあれば教えてください。
  • 自宅の設計図面がないため、Google Mapsを利用して自宅の屋根の面積を算出する方法がわかりません。ご存じの方がいらっしゃれば、教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

#1~#3です。 >緯度・経度を取得するロジックを検討いたします #1の回答から、何度も触れているように、google mapは緯度・経度を軸に作成されていると思われます。 それなので、イベントを取得すれば、そのまま緯度・経度を取得できるようになっています。 http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html#MouseEvent もう一度、最初から順にゆっくり読み直していただければ、私の言いたいことが通じるかもしれません。

suka-moka
質問者

お礼

すみません。 http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html#MouseEvent で、目が覚めました。 なんども同じような質問をしてしまい、恐縮です。 本当にありがとうございました。 感謝いたします。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

#1、#2です。 なんだか、あまり回答を読んでらっしゃらないような気もしますが… すでに、#2に書きましたように、 1)マップ上のクリックされた点から緯度、経度を取得し 2)地表面上の多角形の座標に変換   (面積を求めるだけなので原点はどこでもかまわない) 3)クリックされた点を結ぶ閉多角形の面積を算出 4)傾斜を考慮して、3)の面積を補正 のような手順で、精度を別にすればいちおう可能ではないかと思います。 ほぼ実寸計算みたいなものなので、縮尺というものが入り込む余地はないと思いますが… *私が「精度」といっているのは、マップの緯度・経度の精度(=距離精度)のことです。 (ほとんどこれで計算精度が決まることになりますし、精度が悪ければ実用的でなくなるかも知れません。) 3)の面積の求め方は以下をご参考に http://natu.txt-nifty.com/natsutan/2004/06/post_2.html http://www5d.biglobe.ne.jp/~noocyte/Programming/Geometry/PolygonMoment-jp.html#AreaAndDirection

suka-moka
質問者

お礼

たびたびすみません。丁寧な解説頂き感謝です。 面積の出し方のURLはとても参考になります。 また、下記、プロセスを整理して頂きすっきりしました。 1)マップ上のクリックされた点から緯度、経度を取得し 2)地表面上の多角形の座標に変換   (面積を求めるだけなので原点はどこでもかまわない) 3)クリックされた点を結ぶ閉多角形の面積を算出 4)傾斜を考慮して、3)の面積を補正 おそらく3)でのイベントの取り方がプログラムの一つの鍵なのかなぁと思っています。 それと、傾斜のデータをどうするかという点です。アプリをつくる場合は 多くの方にもご利用いただきたいという希望もあるので、予め 「急」「やや急」「一般的な屋根角度(五寸勾配約27度程度)」「平らに近い」「平ら」 のような図と文言を用意して補正のための係数をその選択肢に持たせることになると思います。 (質問に書きました参考URLのような選択肢です。) クリックを重ねて緯度・経度を求めるのはブラウザ(クライアント)側で発生するイベントなのでjava scriptでイベントを取得してgoogleAPIに一度データを渡して、再度、サーバーから緯度経度の値をもらい、それを仰るとおり面積に直し、(ここもプログラムの要ですね)、傾斜でも補正、という手順でだと理解しました。緯度経度がわかればそこから面積の算出はライブラリがありそうな気もしています。 fujillinさんが前述されたとおり確かに緯度、経度に関しての誤差がありそうですが こんなサイトがあり、参考になりそうな気がしましたので緯度・経度を取得するロジックを 検討いたします。 http://api.knecht.jp/geocoding いろいろと教えて頂き感謝申し上げます。

すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >現在の縮尺寸法」的な表示がでないので計算が難しい気がします。 #1では、出力をもとに算定する考えを説明しましたので「縮尺」の概念を用いましたが、画面表示やプリントアウトはその出力機器に依存するところがあるので、データ自体には縮尺という概念がないのではないでしょうか? 確かに、表示のスケールの指標としてgoogleではzoomが使われているようですがこの値は直接には縮尺とは無関係な値になっています。(実際の地図の表示にはバースケールが表示されるので、換算は可能かと思われます。(多分以下で述べる方法かも?)) 画像データと計算だけから求める場合は、google mapは緯度、経度を基本としている地球規模でのmapですので、縮尺などを考えずともこの情報から計算すればよいのではないでしょうか? #1でも述べましたように、地球は正球体ではないので、計算は多少複雑になるかとは思いますが。 <googleでの座標系> http://ja.wikipedia.org/wiki/%E6%B8%AC%E5%9C%B0%E7%B3%BB http://en.wikipedia.org/wiki/World_Geodetic_System (下のリンクは英語です。私にはわかりません。) <緯度、経度と距離の関係は以下> http://ja.wikipedia.org/wiki/%E7%B5%8C%E5%BA%A6 http://ja.wikipedia.org/wiki/%E7%B7%AF%E5%BA%A6 実際の計算では、一度、緯度から想定半径を算出してしまえば、対象が地球に比べて充分小さいと考えられるので、あとはその半径での球体表面での計算と考えても問題はないと思われます。 とはいうものの、このような面倒な計算を自分でしなくても、googleではdistanceを求めるサービスも提供されていますので、座標から距離を求めることが出来そうです。(実際に確認はしていません。なぜか、日本語のリファレンスにはこの機能が紹介されていないみたいですが…) http://code.google.com/intl/en/apis/maps/documentation/javascript/reference.html#DistanceMatrixService (↑英語なので、読んでいません。あしからず) 地図をクリックした時の、位置と緯度・経度との関係などについては前述のリファレンスをご参照ください。 ただし、#1でも述べましたが精度がどのくらいかを先に確かめてみた方がよろしいかも知れません。 >(アプリ)を構築したいと思います。 であれば、(↑)の内容ぐらいはすでにお調べかも知れませんが、とりあえず。

suka-moka
質問者

お礼

補足ご回答頂き感謝です。 「実際の地図の表示にはバースケールが表示されるので、換算は可能かと思われます。」 確かに、ご今教示のとおり、画面左下にスケールは発見できました。 このスケールをヒントに何とか面積を割り出す方法を考えています。 また、精度についてですが、傾斜も考えた厳密な正確さ、というよりは1657mm×858mm(1.66mx0.86m≒90x180)のソーラーパネルが何枚のるかということが求めたい値ですので、やはりおっしゃるとおりgoogleマップ上の画面のスケールを基に大まかな屋根の面積を求め(この際、傾斜は考慮しないもとする) その面積をパネルの面積(1.62m2)で割る、というシンプルな計算で求めたいと思います。 できれば、それを、アルゴリズムかしたいのですが.... 住所の特定→クリックで屋根の四角形もしくは三角形の角をクリック→その面積をスケールを基に求める→パネルの面積で割る。→パネルの枚数を算出して、金額に換算する。 という感じです。 アプリ開発もかねて、自分でも勉強してみますが、なにか、ヒントになることが あれば、またご教示頂ければ助かります。

すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>自宅の屋根の面積を求めたいのですが、 自宅の面積を出すだけなら、わざわざコードを組む必要はないのではないでしょうか? 1)単純にgoogle mapを垂直投影の写真と見做して、出来るだけ拡大して出力したものを用意。   この写真の縮尺を求めることができれば、面積は算出可能です。 2)屋根の一辺を地上で実測、あるいは、道路上の目印となる2点間の距離を地上で実測。 3)写真の対応する部分の寸法と、2)の実測値との比率から縮尺を求めます。 4)屋根の平面投影面積(斜めに計った実際の面積でなく)真上から見た面積は、   「写真上での面積」×「1/縮尺」×「1/縮尺」で求めることが可能です。 5)屋根の実面積(勾配がある場合の実際の面積)は勾配を、想定して4)で求めた  面積を補正することで、ある程度の制度で算出が可能でしょう。 ご提示のサイトも上記とほぼ同様の考え方で算出していると想像できます。 1回の算出のために、わざわざAPIを調べてコードを作成するよりも、上記の方法のほうが精度の高い値を求められると考えられます。 というのも、googleの距離の精度は地球規模で求めているので、それほど高いものとは思えません。 地球が正球体でないことの補正などは行なっているようですが、緯度・経度の算出精度そのものもどのくらいなのか不明ですが、それほど高いものとも思えません。 http://www.google.com/support/forum/p/maps/thread?tid=5f88e6bdf6567b5d&hl=ja http://www.google.com/support/forum/p/maps/thread?tid=37b5e7394ae34395&hl=ja 上記の実測と併用する方法であれば、写真がボケている分の精度は損なわれますが、縮尺に関しては実測との比率で求めることが可能なので、精度が上がるのではないかと想像します。 さらに、googleの写真を用いなくても、建物の外周壁を地上で実測し、さらに軒の出などを測ることで実測値から屋根の面積を求めることもできそうな気がします。そのほうがもっと正確な値を算出できる可能性が高いかと思われます。 (軒の出は実測できなくても、ある程度実測に準じた計測が可能ではないかと想像します。) どうしても、コードを組みたい場合は、リファレンスがありますのでそちらをご参考になさるとよろしいかと思います。 http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html

suka-moka
質問者

お礼

ご回答頂きありがとうございます。 ますは実測値との比較ですね。 google earthの縮尺データはどのように 入手するのかお分かりになりますか? ゼンリン地図などですと、25000分1とか5000分の1とか の縮尺寸法表示が地図の右下などに出ますので、計算が比較的しやすいと存じますが google mapは「現在の縮尺寸法」的な表示がでないので 計算が難しい気がします。 比較するものがないと値を求められないという意味でやはりなにかしらの実測値が必要なのでしょうか。 できれば自宅以外の方にご希望があれば太陽光パネルが何枚乗るか 測ってあげたいので、やはり、参照サイトのような、しくみ(アプリ)を 構築したいと思います。

すると、全ての回答が全文表示されます。

関連するQ&A