2017-11-18 8 views
-1

入力ファイルがいくつかの都市エリアの建物である交差点の関数を作成しようとしています。クエリボックスを使用して建物だけの交差点を作成していますそのクエリボックス領域に見つかりました。交差点のRツリーのクエリ/バウンディングボックス

import matplotlib.pyplot as plt 
import matplotlib as mpl 
from mpl_toolkits.basemap import Basemap 
import fiona 
import fiona.crs 
import rtree 


input_file = 'se_england_clean.shp' 
out_file = 'se_england_out' 
file_index = 'Rtree_index_east.idx' 

query_box = [-0.0957870483,51.5134165224,-0.08664608,51.5192383994] 

def write_clipped_file(name_file_in, out_file, file_index): 
idx = rtree.index.Index(file_index) 
idx.insert(0, (input_file)) 
list(idx.intersection((query_box)))[0] 
with fiona.open(input_file, 'w') as out_file : 
    for building in idx: 
     out_file.write(building) 

私は

RTreeError: Coordinates must be in the form (minx, miny, maxx, maxy) or (x, y) for 2D indexes 

ない、それは働いていない理由は、私は、座標の異なる組み合わせを試してみたことを確認エラーが発生します。バウンディングボックスの形式は、単に、CSV形式を使用して、ロンドンの上に箱を作り、ここで見つけることができます:

http://boundingbox.klokantech.com/

私はロンドンで小さなバウンディングボックスを使用して、INPUT_FILEからどのように多くの建物を見つけたいですそのボックス内で交差する。後で私はそれを視覚化するためにベースマップを使用する予定です。クエリボックスのほかに、自分のコードで正しいアイデアはありますか?

基本的に新しいインデックスを開き、query_boxと交差するすべての建物を選択しようとしました。返される値は、私が可視化したい建物のインデックスのリストでなければなりません。

私は、Fionaで入力シェイプファイルと出力で生成したい新しい(クリップされた)シェイプファイルを開きました。インデックスのリストをサイクリングすることで、希望の建物を選択して新しいファイル 'out_file'に書き込もうとしました。

with fiona.open(input_file, 'w') as out_file : 

神は 子猫 入力ファイルを殺す:

+0

[Python] Rtree交差点とfiona質問の重複](https://stackoverflow.com/questions/47299216/python-rtree-intersection-and-fiona-questions) - 修正しなくても質問を再投稿しないでください基本的なバグ。 –

答えて

0

たびに誰かがこのような行を実行します。

幸いなことに、前のデータを読み込むのを忘れてしまい、この質問の以前のコピーで指摘されたエラーを修正しなかったので、その行には到達しません。