タグ付けされた質問 「mysql-spatial」

4
PostGISは、農産物農場アプリケーションにMySQLよりも優れていますか?
西ミシガン州の農場の場所を保存するWebアプリがあります。製品(「ブロッコリー」など)を検索すると、その製品を栽培しているすべての農場が表示されます。 現在、MySQLと三角法を使用して、ユーザーの場所と各ファームの場所の差を計算しています。それは悪い方法ではありませんが、やることが必要でした。 もうすぐやりたいことは、さまざまな地域のさまざまな製品の成長シーズンを計画することです。(たとえば、カリフォルニアではアボカドが特定の時期に成長しますが、オハイオ州では成長しないことを示したいと思います。) 私はこれが無制限で素朴な質問であることに気付きましたが、PostgreSQL / PostGISに切り替えてその空間機能を活用する価値があるでしょうか?

1
ST_Distance_Sphereのデフォルトの地球半径はどこから来ますか?
MySQLのドキュメントでは ST_Distance_Sphere 計算では、球状の地球と構成可能な半径を使用します。オプションの半径引数はメートル単位で指定する必要があります。省略した場合、デフォルトの半径は6,370,986メートルです。radius引数が存在するが正ではない場合、ER_WRONG_ARGUMENTSエラーが発生します。 PostGISはのドキュメントで述べてST_Distance_Sphereいます(ドキュメントはもう正確ではありませんが) 球状の地球と6370986メートルの半径を使用します。 どこからデフォルトの6,370,986メートルを取得しましたか? WGS84によると、長軸半径は6,378,137.0 mです。現在、平均半径を使用しているPostGISは、基本的に6371008を使用しています。 コードを見る #define WGS84_MAJOR_AXIS 6378137.0 #define WGS84_INVERSE_FLATTENING 298.257223563 #define WGS84_MINOR_AXIS (WGS84_MAJOR_AXIS - WGS84_MAJOR_AXIS / WGS84_INVERSE_FLATTENING) #define WGS84_RADIUS ((2.0 * WGS84_MAJOR_AXIS + WGS84_MINOR_AXIS ) / 3.0) つまり -- SELECT 6378137.0 - 6378137.0 / 298.257223563; WGS84_MINOR_AXIS = 6356752.314245179498 -- SELECT ( 2.0 * 6378137.0 + …

2
MySQLにlng / latを保存するためのデータ型
MySQLデータベースにlnt / latポイントの大きなリストを保存しています。現時点では、これらは英国のMの投影点ですが、長期的には世界中の点の座標を保存できるようにしたいと思います。どのデータ型を使用する必要がありますか? 私は使い始めましdecimal(18,12)たが、この精度が必要かどうか、または単にfloat。他に考慮すべきことがある場合に備えて、コードを含めました。 CREATE TABLE UKTest ( lat FLOAT, lng FLOAT ) 私はSQLが初めてなので、クエリを実行するときにデータ型が重要かどうかわかりません。全体のメモリは変数のタイプに応じて変わると思いました。この種の作業に基本的なMySQLデータベースよりも空間データベースを使用する利点はありますか?

3
MySQLで空間インデックスを使用するとパフォーマンスが低下する
これがより良いフォーラムであると示唆されたとき、Stack Overflowで尋ねられた質問の再投稿。 私は、地理空間ではないが非常によく適合するデータセットをプッシュするために少し実験を試みていますが、結果はやや不安定です。データセットはゲノムデータです。たとえば、遺伝子などの要素が特定の開始座標と停止座標(X軸)を占めるDNA領域があるHuman Genomeです。Y軸を占めるDNAの複数の領域(染色体)があります。目標は、単一のY座標に沿って2つのX座標と交差するすべてのアイテム、たとえばLineString(START 1、END 2)を戻すことです。 理論は健全に思えたので、既存のMySQLベースのゲノムプロジェクトにそれをプッシュし、次のようなテーブル構造を思い付きました。 CREATE TABLE `spatial_feature` ( `spatial_feature_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `external_id` int(10) unsigned NOT NULL, `external_type` int(3) unsigned NOT NULL, `location` geometry NOT NULL, PRIMARY KEY (`spatial_feature_id`), SPATIAL KEY `sf_location_idx` (`location`) ) ENGINE=MyISAM; external_idこのテーブルにエンコードしたエンティティの識別子を表し、このexternal_typeソースをエンコードします。すべてが順調に見えたので、いくつかの予備データ(30,000行)を入力しましたが、これはうまくいくようです。これが300万行のマークを超えて増加すると、MySQLは空間インデックスの使用を拒否し、使用を強制されたときに遅くなりました(40秒対全テーブルスキャンを使用した5秒)。さらにデータが追加されると、インデックスの使用が開始されましたが、パフォーマンスの低下が続きました。インデックスを強制的にオフにすると、クエリは8秒になりました。私が使用しているクエリは次のようになります。 select count(*) from spatial_feature where MBRIntersects(GeomFromText('LineString(7420023 1, 7420023 1)'), …

4
20の最も近い点を効率的に見つける方法[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、地理情報システムスタック交換のトピックになるようにします。 昨年休業。 私の近くにある20の最も近いビジネスを見つけたいとします。 My table structure is like this: BusinessID varchar(250) utf8_unicode_ci No None Browse distinct values Change Drop Primary Unique Index Fulltext Prominent double No None Browse distinct values Change Drop Primary Unique Index Fulltext LatLong point No None Browse distinct values Change Drop Primary Unique Index …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.