地理情報システム

地図製作者、地理学者、およびGIS専門家のためのQ&A

6
ArcGISツールとして実行されるPythonスクリプトを高速化する方法[非公開]
これは非常に一般的な質問です。ツールボックスにインポートして実行するarcpyスクリプトを高速化するために、GISプログラマーがどのようなヒントとコツを使用したのかと思っています。 私はほとんど毎日、小さなスクリプトを書いて、オフィスの非GISユーザーがGISデータを処理できるようにしています。一般的に、ArcGIS 10.0の処理は9.3.1よりも遅く、Pythonスクリプトを実行するとさらに遅くなることがあります。 実行に24時間以上かかるスクリプトの特定の例をリストします。これは、バッファ内の各形状について、バッファ内のラスタの領域を集計するループです。バッファーには約7000の形状があります。私はそれがこれほど長く続くとは思わない。A while x <= layerRecords: arcpy.SetProgressorLabel("Tabulating Row: " + str(x) + " of " + str(ELClayerRecords)) arcpy.SelectLayerByAttribute_management(Buff,"NEW_SELECTION", "Recno = " + str(x)) # Selecting the record TabulateArea(Buff, "Recno", MatGRID, "VALUE", ScratchWS + "/tab" + str(z) +".dbf", nMatGRIDc) # Tabulate the area of the single row arcpy.AddMessage (" …

1
正確なTissot Indicatrixを作成する方法は?
A ティソIndicatrixは、与えられた突起(下の図に、赤色の円のそれぞれは、同じ領域を占める)する傾向が一目で歪みの種類を通信するための有用な方法です。TIを生成するための一般的な方法には独自の問題があると言われていますが、それは時として悲惨なほど不正確です。 一般的な方法の問題点は何ですか?また、平均的なGISの人がアクセスできるTIを生成する最も正しい方法は何ですか?


4
QGIS、ArcGIS、PostGISなどを使用しないPythonでのより効率的な空間結合
私はここの例のように空間結合をしようとしています:「場所によって属性を結合する」Pythonオプションはありますか?。しかし、そのアプローチは本当に非効率的/遅いようです。わずかな250ポイントでこれを実行しても、ほぼ2分かかり、1,000ポイントを超えるシェープファイルでは完全に失敗します。より良いアプローチはありますか?ArcGIS、QGISなどを使用せずに、これをPythonで完全に実行したいと思います。 また、ポリゴン内にあるすべてのポイントの属性(母集団)を合計し、その量をポリゴンシェープファイルに結合できるかどうかを知りたいと思います。 これが私が変換しようとしているコードです。9行目にエラーが表示されます。 poly['properties']['score'] += point['properties']['score'] それは言う: TypeError:+ =: 'NoneType'および 'float'のオペランドタイプはサポートされていません。 「+ =」を「=」に置き換えても問題ありませんが、フィールドを合計しません。また、これらを整数として作成しようとしましたが、同様に失敗します。 with fiona.open(poly_shp, 'r') as n: with fiona.open(point_shp,'r') as s: outSchema = {'geometry': 'Polygon','properties':{'region':'str','score':'float'}} with fiona.open (out_shp, 'w', 'ESRI Shapefile', outSchema, crs) as output: for point in s: for poly in n: if shape(point['geometry']).within(shape(poly['geometry'])): poly['properties']['score']) += point['properties']['score']) output.write({ …

2
QGIS 2.2の[選択した機能を結合]ボタンはどこにありますか?
[選択した機能を結合]ボタンが見つからないようです。シェープファイル内のいくつかのポリゴンをマージする必要がありますが、このバージョンではその方法を見つけることができません。(2.2まではヴロツワフで走っていました)。 [選択された機能を結合]ボタンはまだQGIS 2.2に含まれていますか?どこで見つけることができますか?現在のアイコンは何ですか?
30 qgis  qgis-2.2 

3
QGISのマップに選択したフィーチャのみを表示しますか?
このオプションがこれまで存在したかどうかはわかりませんが、新しいQGISバージョンは他の場所に多くのことを隠しており、これはとても簡単なようで、以前はこれを行うことができたと確信しています。 船舶追跡を含む非常に大きなデータセットがあります。個々の船の航跡(points2oneのポイントレイヤーから作成)を分析したいのですが、非常に混雑しているため、個々の航跡を見るのは困難です。各単一トラックを新しいレイヤーとして保存したくないので、属性テーブルで1つのトラックを選択し、そのトラックのみをマップに表示したり、他のトラックを非表示にしたりすることは可能でしょうか?
30 qgis  select  display 

6
QGIS3をMacにインストールしますか?
Kyngchaosインストーラーはpython3を見つけられません。HomeBrewを使用してpython3をインストールしましたが、/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/bin/python3.6 python3がインストールされていることを認識するようにQGISインストーラーに指示するにはどうすればよいですか? 以前にHomeBrewを使用してGDALをインストールしていたので、状況を改善できると考えて再インストール(または最終的に別のバージョンをインストール)を試みましたが、QGIS3インストーラーはまだPython 3を見つけることができません。 インストールエラーは、インストーラーが開くとすぐに表示されるポップアップで、「python3 QGISにはPython 3.6が必要です」と表示されます。 Mac以外のユーザーの場合、QGISのインストーラーを提供するためにKyngchaosに依存しているようで、v3のインストーラーをリリースしたばかりです。 更新:以下の質問に答えました。QGISインストーラー/ QGISを正しいバージョン(私は確かにそうではありません)に向けるのに十分な知識がない限り、HomeBrewを使用しないでください。

3
Leaflet GeoJSONレイヤーの追加/削除
Leaflet APIを使用して、さまざまなズームレイヤーでさまざまなGeoJSONレイヤーを表示しようとしています。3つのレイヤーすべてを一度に読み込んで表示できます(実際にすべてを一度に表示したくないのですが)。さまざまなズームレベルで読み込んで表示できます。 ズームレベル1〜6で、地図に1つのGeoJSONレイヤーが表示されるようにコードを設定しています。レベル7〜10では別のレベルが表示され、レベル11+では3番目のレベルが表示されます。それらを表示することはできます。私が今仕事をしようとしているのは、表示されている場合は他の人をオフにすることです。1-6から7-10に移動すると(1-6レイヤーが正しくオフになることを意味します)、7-10から11+に移動しません(7-10レイヤーが固着することを意味します)。理由(同じコードを使用)。 GeoJSONレイヤーのajaxは次のとおりです。 function getJson(defaultStyle, map, simp, geojsonLayer){ var url = 'file' + simp + '.json'; map.removeLayer(geojsonLayer); geojsonLayer.clearLayers(); $.getJSON(url, function(data){ geojsonLayer = L.geoJson(data, { style: defaultStyle, onEachFeature: onEachFeature }); geojsonLayer.addTo(map); }); } そして、ズームに応じてajaxを呼び出すメイン関数があります。simpCounterは最初は0に設定されています。 map.on('zoomend', function(e) { if (map.getZoom() >= 7 && map.getZoom() <= 10) { if (simpCounter == 0 …


3
さまざまなスケールで球上の距離を測定する際のピタゴラスの定理とハバーシンの式の近似誤差は何ですか?
多くの人は、最初に2つの経度/緯度ペア間の距離を計算しようとすると、ピタゴラスの定理が適切な距離関数として機能するかどうかを尋ねます。 多くの場合、人々は「いいえ、ピタゴラスの定理は2Dユークリッド平面上でのみ機能します」と答えます。しかし、ピタゴラスの定理がどれほど不正確であるかについて、球上のスケールと位置の影響について言及することはめったにありません。 基本的な考え方は非常に小さいスケールであるため、球体の表面は非常に平面に似ています。非常に大きなスケールでは、表面に沿った距離はより湾曲しているため、不正確なピタゴラスの定理と正しいHaversineフォーミュラの差は大きくなります。 あなたが測定しようとしている距離のスケールに基づいて2つの距離測定値の違いを教えてくれる公式や経験則を知っている人はいますか? 私はこれを明示的に持っていると役立つと思います: ピタゴラスの定理が完全ではない理由の説明。そして より多くの「大まかな」距離を探している人々に、ピタゴラスが実際にいつ目的を果たすかを知らせます。

3
正規表現を使用して属性データを簡単に編集する方法は?
QGISを使用する修士課程の学生向けのチュートリアルを書いています。タスクの1つでは、属性データを変更する必要があります(興味がある場合は、こちらのチュートリアルのPDFドラフトを参照してください)。 問題は、それらに属性データを編集させる方法です。私はこの質問が以前に尋ねられたことを知っており、答えは簡単でした:LibreOffice calcを使用して変更し、保存して、行の順序と列のタイトルが同じになるようにします。私は以前、このアプローチを使用して大きな効果を上げました。 残念ながら、ソリューションは機能しなくなりました。LibreOffice(5.4.2)またはOpenOffice(3.4.1)での.dbfファイルの保存は、QGISの観点からデータをスクランブルします(ランダムな整数のみが属性テーブルに表示されます)。代わりに追加の.dbtファイルを作成します。 質問に答えるには、MScクラスの生徒に来週これを行うにはどうすればいいですか?次のオプションを検討しました。 代わりにRを使用します(私にとっては素晴らしいですが、学生にとっては怖いです) ファイルを.csvとして編集してから、タイムスタンプに基づいて結合します(細かいが、過度に複雑に見えるため、2時間の実用性により多くのエラーが発生する可能性があります) 代替プログラムを使用する:GnumericとExcelを試しましたが、どちらもすぐに良い結果を生成しませんでした。 この質問に答えるために、複製可能な例を作成しました。QGISでファイル「points.shp」を開き、属性テーブルを観察して閉じます。LibreOfficeの属性テーブル「points.dbf」のセルをいくつか編集します-保存します。QGISで「points.shp」を再度開き、スクランブルされた属性テーブルを確認します。.zipフォルダー内のその他のシェープファイルは、LibreOfficeとOpenOfficeによって既に破損しており、問題がどのように見えるかを示しています。 要するに、この問題をどのように最も良く解決するのでしょうか?

5
Python GDALバインディングを使用してラスターコーナー座標を取得する方法は?
gdalのPythonバインディングを使用して、ラスターファイルから角座標(緯度/経度)を取得する方法はありますか? オンラインでいくつかの検索を行っていないことを確信させたので、gdalinfoの出力を解析することで回避策を開発しました。これはやや基本的なことですが、Pythonに不慣れな人にとっては時間を節約できると思いました。また、gdalinfoに地理座標とコーナー座標が含まれている場合にのみ機能しますが、これは常にそうだとは思いません。 これは私の回避策です、誰かがより良い解決策を持っていますか? 適切なラスターのgdalinfoは、出力の途中で次のような結果になります。 Corner Coordinates: Upper Left ( -18449.521, -256913.934) (137d 7'21.93"E, 4d20'3.46"S) Lower Left ( -18449.521, -345509.683) (137d 7'19.32"E, 5d49'44.25"S) Upper Right ( 18407.241, -256913.934) (137d44'46.82"E, 4d20'3.46"S) Lower Right ( 18407.241, -345509.683) (137d44'49.42"E, 5d49'44.25"S) Center ( -21.140, -301211.809) (137d26'4.37"E, 5d 4'53.85"S) このコードは、そのようなgdalinfoのファイルに対して機能します。私は時々、座標が度、分、秒ではなく、度と小数であると信じています。その状況に合わせてコードを調整するのは簡単なはずです。 import numpy as np import subprocess …
30 python  gdal 

4
QGIS Pythonでマップレイヤーを反復処理しますか?
マップレイヤーを反復処理する方法がわかりません。コンテンツウィンドウで現在強調表示されているレイヤーにアクセスできますiface.activeLayer()が、コードをすべてのレイヤーで動作させたいです。 この機能への簡単なアクセスを提供するAPIに何も表示されず、良いオンライン例が見つかりませんでしたが、何か見落としていたのかもしれません。
30 pyqgis  layers 

1
PostGISでポリゴンからマルチポリゴンに変換/タイプキャストする方法は?
ポリゴンをマルチポリゴンタイプに型キャストする方法はありますか? たとえば、ポイントでST_Buffer()を使用して円を作成しました。その関数の戻り値の型は、Polygon型です。問題は、ジオメトリ列にマルチポリゴンタイプに制限する制限があることです。そのため、単純なポリゴンを挿入できません。 ST_MPolyFromText()関数を使用しましたが、通常どおりそのためにnullを返し、ST_Dump()は適切な出力を提供しません。 制約は次のとおりです。 CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'MULTIPOLYGON'::text OR geom IS NULL),
30 postgis 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.