タグ付けされた質問 「optimization」

スクリプト、アプリケーション、ソフトウェアなどのプロセスを改善または最適化する場合は、このタグを使用します。

1
Postgisデータベースクエリの最適化
DTED形式のラスターセットがあり、raster2pgsqlコマンドラインツールを使用してPostGISデータベースにロードします。 各ラスターは単に行に格納され、ridとラスター形式の値によって記述されます。 次に、ポイントの経度と緯度を取得し、このポイントに対応するピクセルの値を返すデータベース関数を作成します。 私が抱えている問題は、データベースがOdroidボードで動作するため、それを行うのにかなりの時間がかかる(3〜4秒)ことです。 私が処理するデータセットは非常に大きい(ラスターは英国全体をカバーしている)ことはわかっていますが、PostgreSQLとPostGISに精通していないため、より高速に処理できると思います。 これは私がこれまでに行ったことです: SELECT ST_Value(rast, ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326)) FROM ( SELECT * FROM rasters WHERE rast && ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326) ) x; $1そして、$2それぞれ長いと緯度です。

1
ポリゴンクエリのポイントのGISTインデックスによるパフォーマンスの向上
2つのテーブルがあります。locations(id、region_id、the_geom)とregions(id、the_geom)です。各ロケーションポイントについて、それが配置されているリージョンを特定します。 UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); ロケーションポイントにGISTインデックスを作成することには意味がありますか?リージョンポリゴンにインデックスを作成しますが、ポイントについてはわかりません。クエリを高速化できますか?

4
空間関数による行の制限
以下のクエリのパフォーマンスを改善しようとしています。クエリ(FROM句のサブクエリ、WHERE句のサブクエリ)をどのように記述しても、countery = 24の行が60行しかないにもかかわらず、高価なST_DWITHIN関数ですべての570K行を実行するように要求します。postgresにcounty = 24でフィルターをかけるようにするには、postgis funcを実行する前にどのようにすればよいですか?700msはあまり心配する必要はありませんが、このテーブルが1,000万回以上になると、パフォーマンスが心配になります。 また、p.idは主キー、p.zipcodeはfkインデックス、z.countyはfkインデックス、p.geomはGiSTインデックスです。 クエリ: EXPLAIN ANALYZE SELECT count(p.id) FROM point AS p LEFT JOIN zipcode AS z ON p.zipcode = z.zipcode WHERE z.county = 24 AND ST_DWithin( p.geom, ST_SetSRID(ST_Point(-121.479756008715,38.563236291512),4269), 16090.0, false ) 分析の説明: Aggregate (cost=250851.91..250851.92 rows=1 width=4) (actual time=724.007..724.007 rows=1 loops=1) -> Hash Join (cost=152.05..250851.34 rows=228 …

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 …

2
postgisでスペース分割をスピードアップする方法は?
重複しているポリゴンがたくさんあり、重複しているポリゴンを避けるためにスペースを分割しようとしています。私の問題はかなり単純だと思います。一部のESRI製品とhttp://arcscripts.esri.com/details.asp?dbid=16700を使用して、同僚が48秒で計算しました。 私はhttp://s3.opengeo.org/postgis-power.pdf#page=24を使用してpostgisでそれをやろうとしています(http://trac.osgeo.org/postgis/wiki/UsersWikiSimplifyPreserveTopologyを使用して詳細を推測しています)インスピレーションとして)しかし、非常に遅いので、10個を超えるポリゴンでは実行できません(分割するポリゴンが800個あります)。遅い部分はST_Unionです。私はさまざまなことを試しましたが、成功したものはありません。現在の状況は次のとおりです。 select geom from (select st_linemerge(st_union(geom)) as geom from (select st_exteriorring((st_dumprings((st_dump(t.geom)).geom)).geom) as geom from (SELECT geometry AS geom, id FROM tt WHERE campaign_id = 204 ORDER BY id limit 200) t) t2) t3 これは26分間計算されています(linemerge()は実際にはそうではありません)。st_dumpでバグが発生する場合に備えて、ポリゴンはマルチポリゴンです。 ヒントはありますか?ラインワークのst_union()は非常に遅い部分です。 おかげで、 ニコ。 PS:ここにいくつかの数字があります:852マルチポリゴン、14880ポリゴン、21467ラインストリング、合計315513頂点。


4
PostGIS ST_Intersectsのパフォーマンスの問題を修正する方法は?
私はpostgisの初心者で、クエリのパフォーマンスに問題があります。 この私のクエリ: SELECT DISTINCT ON (userid) userid ,ST_AsText(position), timestamp FROM table1 WHERE ST_Intersects ( ST_GeomFromText('a multiypolygon geom goes here',4326),position) ORDER BY userid, timestamp desc 問題は、私のマルチポリゴンに非常に大きなポリゴン(単語のドキュメントでは600ページの長さです)が含まれていて、実行に2時間以上かかったことです。 クエリを最適化する方法または別の方法を使用する方法はありますか? どうぞよろしくお願いします!

2
ポイントを最適に配置するためのアルゴリズム
私は、数千の施設が実際に建設された場所と、人口の移動時間を最小限に抑えるために最適に配置される場所を比較しようとしています(国勢調査区または地域の重心で表されます)。ポイントを最適に配置する方法について、ほとんど何も見つけられません。 これらの場所を選択する方法についてはいくつかのアイデアがありますが、空間に配置するポイントの数が多いため、巧妙に最適化されていないアルゴリズムには長い時間がかかり、おそらく数年かかることになります。したがって、私の質問:固定数のポイントを配置する場所を選択するための標準アルゴリズムはありますか? 最終的には、見つけたアルゴリズムをすべて出発点として採用し、それを適応させて、人口だけではなく、より多くの情報を組み込みます。したがって、好ましい答えには、アルゴリズム、コードの詳細な説明が含まれるか、オープンソース言語で記述されるため、複製して拡張することができます。ただし、ArcGISにこの最適化に便利な機能がある場合は、それから始めます。

1
PostGISクエリとQGISフィルター
約300万の形状を持つPostGISデータセットがあります。一度に表示する必要がある図形は約1,500個だけですが、表示する必要がある図形は、別のデータセットで選択されているフィーチャによって異なります。 私の質問は、PostGIS内で大規模なデータセットをフィルタリングしてからQGISに提供するのと、データセット全体をQGISにロードしてから組み込みのレイヤーフィルタリングを使用することの速度の違いは何ですか?PostGIS 2とQGIS 1.8を実行しています。 PostGISの方が高速だと思いますが、どのくらい高速ですか?あるソリューションのコーディングに他のソリューションよりも時間をかける前に、セカンドオピニオンが欲しい ありがとう!

1
openstreetmapタイルレンダリングを最適化する方法は?
私は現在、水(3,198,333レコード)と世界の詳細な世界の境界(processed_p)をレンダリングしようとしています。両方のレイヤーのレンダリングに成功しましたが、パフォーマンスに満足していません。 私の現在のセットアップは次のとおりです: Amazon EC2インスタンス(m2.2xlarge) 34.2 GBのメモリ 13 EC2コンピューティングユニット(それぞれ3.25 EC2コンピューティングユニットを備えた4つの仮想コア) 850 GBのインスタンスストレージ 64ビットプラットフォーム I / Oパフォーマンス:高 Mapnik、4スレッド これらのベンチマークに基づくPostgresqlの設定 すべてのレイヤーにGiSTインデックスが設定されている パフォーマンスを向上させるための私のアイデアのいくつか: 機能を簡素化する ウォータータイルをレンダリングしない-openlayersでロードすると、ロードの失敗を青色に設定することができます 世界の水の特徴をさまざまなセクションに分割し、mapnikに境界を明示します。たとえば、北アメリカから水フィーチャを分割した場合、オーストラリアのタイルをMapnikが生成しているときに、北アメリカにクエリを実行して、そのフィーチャがタイルにあるかどうかを確認しないでください。 私の2番目のアイデアはもう少しクレイジーです。Mapnikは、処理するフィーチャを見つけるために各タイルに対して空間クエリを実行するため、すべてのレイヤーに対してこのクエリを事前に実行できます。これにより、処理能力がいくらか節約されると思います。 私の質問: タイルレンダリングを最適化するために他に何ができますか?


4
OGRを使用してラインが交差するポリゴンを検​​索しますか?
1本の線(GPSトラック)で交差するすべてのポリゴンを見つけようとしています。私はこれを計算するために(Pythonからの)OGRライブラリーを使用していますが、現在は少し「総当たり」(そして遅い)です。私のトラックのすべてのポイントについて、すべてのポリゴンでintersectメソッドを呼び出します。明らかな最適化は、隣接するポリゴンでのみチェックすることです。しかし、これは既知の解決策(私が見つけられない...)の古典的な問題だと思います。 スタンドアロンソフトウェアを作成しようとしているので、専用データベースの使用は避けたいと思います(DBを使用する場合、spatialiteがオプションです)。 (参考までに、現在のソースコードはこちらから入手できます:https : //github.com/dkm/airspace-checker)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.