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

FionaはOGRの新しい、きちんとしたPythonic APIです

10
ベクターデータセットのすべてのフィーチャを簡単にシフトする方法は?
シェープファイルを作成し、すべてのフィーチャの頂点が一定量シフトしているとしましょう。任意のシフトですべてのフィーチャをシフトする最も簡単な方法は何ですか(したがって、頂点の(x、y)位置)?この修正を適用するファイルがたくさんあるので、Bash / OGRの回答が望ましいでしょう:) 最後に、いい機能があるので、私はこのためにSpatialiteを使用することになりましたShiftCoords。しかし、スレッドは非常に有益でした!皆さんありがとう!

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({ …

1
特別な近傍の焦点統計の計算?
指定した基準の近傍内で、ラスターの各セルの焦点統計を計算しようとしています。 背景-3つのバイナリラスタがあり、それぞれが関心のある単一の植生タイプを表します。調査地域内のセル(近隣のセルの合計/合計)から20 km ^ 2以内の各植生タイプの被覆率を計算したいと思います。問題は、各セルの周囲に単純な円または正方形の近傍を使用できないことです。これを行うと、合計の計算に使用される検索領域に研究領域外の領域が組み込まれるためです。この例外は重要です。統計は生息地モデルの入力として使用され、研究エリア外の地域は生息地の可能性があると見なすことができないため、都市化されているためです。それらを含めると、誤った統計が得られます。だから、私はnは、基準を満たす、希望する近隣のサイズに等しいエリアをカバーするために必要なセルの数によって決定されます。基準は、都市化された地域に該当しないことです。何らかの形のセルオートマトンを使用すべきだと考えています。私はCAで働いたことはありませんが。 私が望むのは、スターターコード、または正しい方向のポイントのようなものだと思います。 以下のコメントに返信: 私の研究サイトの境界にあるセルのこの統計を計算しているとしましょう。調査エリア外のすべてのエリアをゼロに割り当てる(またはNoDataを無視する)と、関心のあるエリアカバレッジの約半分を表す統計が得られます。したがって、約10 km ^ 2のエリアのカバレッジ率、20 km ^ 2エリアの代わりに。私は家の範囲のサイズを勉強しているので、これは重要です。それは動物が風景を見る/使用する方法であるため、近所は形を変えなければなりません。20 km ^ 2が必要な場合は、形状またはホームテリトリーを変更します。[NoDataを無視する]チェックボックスをオンにしない場合、セル出力はNoDataになり、NoDataは役に立ちません。 2014年10月24日現在の「プログラム」 ShapelyとFionaを使用してこれまでに作成したコードは次のとおりです。 import numpy as np import pprint import shapely from shapely.geometry import* import fiona from fiona import collection import math traps = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/occurrence/ss_occ.shp', 'r') study_area = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/Study_Area.shp', 'r') for i in study_area: …

1
shapelyを使用して、ポイントに最も近いラインセグメントを検索しますか?
バックグラウンド 既知のポイントから、図に示されているように、MultiLineStringのテーブルに対して最も近い周囲の「見える境界」を確立する必要があります。 私はこのサイトをいくつかの用語(例:最小エッジ、最小周囲、最近傍、クリップ、ポリゴンを含む、可視性、スナップ、カットノード、レイトレース、フラッドフィル、内部境界、ルーティング、凹型ハル)で検索しました。このシナリオに一致すると思われる以前の質問を見つけることができません。 図 緑の円は既知のポイントです。 黒い線は、既知のMultiLineStringです。 灰色の線は、既知のポイントからの放射状の掃引を示しています。 赤い点は、放射状スイープとMultiLineStringsの最も近い交点です。 パラメーター PointはMultiLineStringと交差しません。 Pointは常にMultiLineStrings内の名目上中央に配置されます。 MultiLineStringはPointを完全に囲むことはないため、境界線はMultiLineStringになります。 約1,000個のMultiLineStringを含むテーブルがあります(通常は約100ポイントの単一行を含みます)。 考慮される方法論 既知のポイントから一連の線を構築することにより、放射状スイープを実行します(たとえば、1度の増分で)。 MultiLineStringを使用して、各放射状スイープラインの最も近い交点を確立します。 放射状スイープラインの1つがMultiLineStringのいずれとも交差しない場合、これは、MultiLineStringの周囲構造に収まる周囲のギャップを示します。 概要 この手法は最も近い交差点を検出しますが、放射状スイープの解像度に応じて、必ずしもすべての最も近い境界ノードポイントを検出するわけではありません。誰もがすべての周辺ポイントを確立するための代替方法を推奨したり、何らかの形のバッファリング、セクター化またはオフセットでラジアルスイープテクニックを補完できますか? ソフトウェア 私は、SpatiaLiteやShapelyをソリューションに使用することを好みますが、オープンソースソフトウェアを使用して実装できる提案を歓迎します。 編集:実用的なソリューション(@geneの回答に基づく) from shapely.geometry import Point, LineString, mapping, shape from shapely.ops import cascaded_union from shapely import affinity import fiona sweep_res = 10 # sweep resolution (degrees) focal_pt = Point(0, 0) …

3
PythonでGeoJSONを生成する
シェープファイルのポリゴンを使用してGeoJSONファイルをプログラムで作成しますが、独自のアプリケーションから属性を追加します。 これは、シェープファイルに対して簡単に実行できます。 def create_data_dayer(self,varlist, data): """ Creates a new shape to contain data about nodes. varlist is the list of fields names associated with the nodes. data is a list of lists whose first element is the geocode and the remaining elements are values of the fields, in the same …
16 python  geojson  ogr  fiona 

3
Python(shapely、fiona)を使用して属性に基づいてポリゴンを溶解しますか?
私は、QGISが機能を「溶解」するのと基本的に同じことを行う関数を作成しようとしています。私はそれは非常に簡単だと思ったが、明らかにそうではない。だから、私が集めたものから、フィオナとshapelyの使用がここでの最良の選択肢であるはずです。ベクターファイルをいじり始めたばかりなので、この世界は私にとってもPythonにとっても新しいものです。 これらの例では、http: //tinyurl.com/odfbanuでここに設立された郡のシェープファイルを使用して います :今の私の最善の方法は、に基づいて、以下の通りであるhttps://sgillies.net/2009/01/27/a-more-perfect-union-continued.html。それはうまく機能し、52の状態のリストをShapelyジオメトリとして取得します。この部分を行うためのより簡単な方法がある場合は、お気軽にコメントしてください。 from osgeo import ogr from shapely.wkb import loads from numpy import asarray from shapely.ops import cascaded_union ds = ogr.Open('counties.shp') layer = ds.GetLayer(0) #create a list of unique states identifier to be able #to loop through them later STATEFP_list = [] for i in range(0 , …

3
RTreeでの空間インデックスの使用を理解していますか?
RTreeでの空間インデックスの使用を理解できません。 例:300個のバッファーポイントがあり、各バッファーの交差領域とポリゴンシェープファイルを知る必要があります。ポリゴンシェープファイルには、20,000を超えるポリゴンがあります。プロセスを高速化するために空間インデックスを使用することが提案されました。 SO ...ポリゴンシェープファイルの空間インデックスを作成する場合、何らかの方法でファイルに「アタッチ」されますか、それともインデックスはスタンドアロンですか?つまり、作成後、ポリゴンファイルで交差関数を実行するだけで、より高速な結果を得ることができますか?交差点は空間インデックスがあることを「認識」し、何をすべきかを知っていますか?または、インデックスで実行してから、FIDなどを介して元のポリゴンファイルにそれらの結果を関連付ける必要がありますか? RTreeのドキュメントはあまり役に立ちません(おそらくプログラミングを学んでいるだけだからです)。手動で作成されたポイントを読み取り、それから他の手動で作成されたポイントに対してクエリを実行して、ウィンドウ内に含まれるIDを返すことにより、インデックスを作成する方法を示します。理にかなっています。しかし、インデックスの元のファイルにどのように関連するかについては説明していません。 私はそれがこのような何かに行かなければならないと考えています: ポリゴンシェープファイルから各ポリゴンフィーチャのbboxを取得し、空間インデックスに配置して、シェープファイル内のIDと同じIDを与えます。 そのインデックスをクエリして、交差するIDを取得します。 次に、インデックスのクエリによって特定された元のシェープファイル内のフィーチャのみで交差を再実行します(この最後の部分をどのように行うかはわかりません)。 正しいアイデアはありますか?私は何かが欠けていますか? 現在、このコードを、1つのポイントフィーチャのみを含む1つのポイントシェープファイルと、20,000個以上のポリゴンフィーチャを含む1つのポリゴンシェープファイルで動作するようにしています。 Fionaを使用してシェープファイルをインポートし、RTreeを使用して空間インデックスを追加し、Shapelyを使用して交差を試みています。 私のテストコードは次のようになります。 #point shapefile representing location of desired focal statistic traps = fiona.open('single_pt_speed_test.shp', 'r') #polygon shapefile representing land cover of interest gl = MultiPolygon([shape(pol['geometry']) for pol in fiona.open('class3_aa.shp', 'r')]) #search area areaKM2 = 20 #create empty spatial index idx …

1
GeoPandas to_file()は座標系なしでGeoDataFrameを保存します
私は持っています GeoPandas 0.2.1 py27_0 fiona 1.7.0 np110py27_1 Python 2.7.10 Anaconda 2-4.1.1-Windows-x86環境にインストールされます。GeoDataFrame入力データセットを読み取ってデータを操作して構築できますが、出力データセットを保存しても座標系は保持されません。 import geopandas as gpd world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp') world_out.shp特徴およびソースシェープファイルのスキーマを含むが、座標ないシステムが定義されていません(<Unknown>)。world_out.prjファイルが0キロバイトで、何が含まれていません。 out = gpd.read_file(r'C:\GIS\Temp\world_out.shp') print out.crs >>> {} 純粋なフィオナを使用してこの操作を実行するようにテストしましたが、正常に機能し、crs情報を保持します。 import fiona datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb' with fiona.drivers(): with fiona.open(datasrc_path,layer='cities') as source: meta = source.meta meta['driver'] = 'ESRI Shapefile' meta['layer'] …

3
FionaでFileGDB(Esriファイルgdb API)ドライバーのサポートを追加する方法は?
それについてはたくさんの質問がありましたが、誰も私の問題を解決しませんでした。 私はマシンを持っています: Windows 7 x64 Python 3.4.3 x64 gdalがインストールされました:gdalinfo --version --> GDAL 1.11.4, released 2016/01/25; ここからホイールGDAL-1.11.4-cp34-none-win_amd64.whlからグダルを取り付けました GDALはにインストールされC:\Python34\Lib\site-packages\osgeoます。そこには、gdalおよびogrおよび.pydファイル用の.exeファイルがたくさんあります。 fiona installed:Fiona-1.6.3-cp34-none-win_amd64.whl同じWebサイトのwheelからインストールされました。 このコードを実行でき、正常に実行されます。 import gdal import ogr from gdalconst import * shp = r"C:\Data\GIS\PTS.shp" driver = ogr.GetDriverByName('ESRI Shapefile') dataset = driver.Open(shp) layer = dataset.GetLayer() layer.GetFeatureCount() schema = layer.schema fields = [field.GetName() for field …

2
シェープファイルMultiPolygonsからShapely MultiPolygonsを作成する
私はフィオナを使用してシェープファイルを読んでいます: with fiona.open('data/boroughs/boroughs_n.shp') as source: mpolys = [p for p in source] candidate = polys[0]['geometry'] これは私に座標のリストのリストを含む辞書を提供し、「MultiPolygon」と入力しますが、座標データを使用してShapely MultiPolygonを作成する方法はわかりません a sequence of exterior ring and hole list tuples: [((a1, ..., aM), [(b1, ..., bN), ...]), ...]. FionaとShapelyを使用してこれを行う「正しい」方法はありますか?
12 python  shapely  fiona 

5
生データをジオパンダに読み込む
生データをa geopandas GeoDataFrame、la a に読み込むことはできpandas DataFrameますか? たとえば、次の作品: import pandas as pd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") pd.read_json(io.BytesIO(r.content)) 以下は行いません: import geopandas as gpd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") gpd.read_file(io.BytesIO(r.content)) つまり、最初にディスクにデータを保存せずに、メモリにある地理空間データを読み取ることはできますか?

1
フィオナのドライバー
pythonパッケージにfionaはどのドライバーがありますか?マニュアルを確認すると、次のように書かれていますが[...] and the possible formats are enumerated in the fiona.drivers list. 、pythonを入力すると from fiona import drivers print drivers > <function drivers at 0x108763050> どうすればそれを「中」に見ることができますか?
12 python  fiona 

1
Pythonを使用して投影座標からシェープファイルを変換する
初心者はここでGISと格闘しています。私は、郡のウェブサイトの郡のウェブサイトにあるシェープファイルを使用して、ミルウォーキー市の病棟を作成しようとしています。私はいくつかの成功を収めてここのスレッドをフォローしています。私のコードは与えます: from pyproj import Proj, transform # wisconsing EPSG:32054 # epsg:4326 is for the entire world, wgs 84...not obvious inProj = Proj(init='epsg:32054') outProj = Proj(init='epsg:4326') x1,y1 = 2560131.496875003, 406816.434375003 x2,y2 = transform(inProj,outProj,x1,y1) print(x2,y2) 出力付き、 -65.70220967836329 43.08590211722421 問題はこれが間違っていることです。ミルウォーキーの経度/緯度は-87.863984および42.920816です。 次に、シェープファイル全体に対してプログラムでこれを行うにはどうすればよいですか。これをベースマップにプロットしたいと思います。このスレッドをフォローしようとすると、エラーコードが表示されます: with fiona.open("ward2012/ward.shp") as shp: ori = Proj(init='epsg:32054' ), dest= Proj(init='EPSG:4326',preserve_units=True) with fiona.open('ward2012/MKE_wards_lat_lon.shp', …

7
Fiona ImportError:DLLの読み込みに失敗しました
LinuxでShapely / Fionaの優れたコンボをうまく使用してきましたが、Windowsで一種の本番環境を作成する必要があり、問題は1つだけです。fionaをインポートしようとすると、次のエラーが発生します。 依存関係ウォーカーを使用してogrext.pdyの依存関係を確認しようとすると、GDALバージョン1.10 dllをロードしようとして失敗します。奇妙なことに、私はGDAL 1.9.2をインストールしていて、(osgeo import gdalから)問題なくpythonにインポートしているようです。したがって、おそらくそれはフィオナのインポ​​ートの問題とは関係ありません。また、別のバージョンのpython向けの.pydファイルを使用すると問題が発生する可能性があるので、100%imでpython 2.7のfionaインストーラーをダウンロードしました。 osgeo4wインストーラーを使用せずに、Python 2.7.5のスタンドアロンインストールを使用していることに注意してください。

2
Geopandasまたはfionaを使用してシェープファイルをラスタライズする-Python
このhttp://tinyurl.com/odfbanuのような本当に単純なシェープファイルを少しラスタライズする必要があります。これは、米国のシェープファイルクーティン郡です。GDALRasterizeLayerはすべてのポリゴンをラスターに書き込みませんか?しかし、Giopandasやfionaを使用して、tiffの記述部分にrastraioを使用する方法があるかどうか疑問に思っていました。 したがって、私の目標は、ラスタライズして、共通の値(例ではLSAD)を共有するすべてのポリゴンに値を割り当てることです。 だから私はスレッドでshongololoに触発されたコードの最初を書きました: Pythonで属性に基づいてポリゴンをディゾルブします(シェイプリー、フィオナ)?。 from geopandas import GeoDataFrame name_in = 'cb_2013_us_county_20m.shp' #Open the file with geopandas counties = GeoDataFrame.from_file(name_in) #Add a column to the Geodataframe containing the new value for i in range (len(counties)): LSAD = counties.at[i,'LSAD'] if LSAD == 00 : counties['LSAD_NUM'] == 'A' elif LSAD == 03 : …

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