Layer オブジェクトには SetAttributeFilter(
>>>layer.GetFeatureCount()
>>>layer.SetAttributeFilter("cover = 'shrubs'")
>>> ) 空間フィルターには 2 種類あります。 1 つは SetSpatialFilter(
SetSpatialFilterRect(
SetSpatialFilter(None)] を選択して空間属性フィルターをクリアできます。
たとえば、次のコードでは、layerAreas はポリゴンであり、layerSites はポイントです
>>> featAreas = LayerAreas.GetNextFeature()
>>> Poly = featAreas.GetGeometryRef()
> ;> & gt; レイヤーサイト.getfeatureCount ()
& gt; & gt; gt; & gt;layersites.getfeatureCount ()
33
>>>layerSites.SetSpatialFilterRect(460000, 4590000, 490000, 4600000)
>> layerSites.GetFeatureCount()
4
>>>layerSites.SetSpatialFilter(None)
>>>layerSites.GetFeatureCount()
42
SQL クエリ ステートメントの実行など、より複雑なフィルターもあります。 SQL の強力な機能を使用すると、より複雑なフィルターを実行できます。次のコードのようなタスクは、カバー タイプが草であるフィーチャを選択し、ID 番号の降順に並べ替えることです。
result = dsSites.ExecuteSQL("select * from sites where cover = 'grass' order by id desc")
resultFeat = result.GetNextFeature()
while resultFeat :
print resultFeat.GetField('id') print resultFeat.GetField('id')
resultFeat = result.GetNextFeature()
dsSites.ReleaseResultSet(result)
42
40 最後の文 ReleaseResultSet(print coverFeat.GetField(0) + ' ' +print coverFeat.GetField(0) + ' ' + cntLayer.GetFeature(0).GetFieldAsString(0) ds.ReleaseResultSet(cntLayer)
coverFeat = coverLayer.GetNextFeature( )ds.ReleaseResultSet(coverLayer) 低木 6 木 11 岩 6 草 11 裸地 6
水 2Intersect は、2 つの要素が交差するかどうかを決定します
poly2.Intersect(poly1)
素の場合は 0、交差の場合は 1 を返します。
Disjoint は、2 つの要素が素であるかどうかを決定します。
poly2.Disjoint(poly1)
素の場合は 0 を返します。反対側
Touchは隣接する(エッジを擦る)ことを意味します
poly2.Touches(poly1)
Return 0はエッジなしを意味し、Return 1はエッジを擦ることを意味します
クロスクロス、通常は線がポリゴンを通過します
poly2.Crosses (line)
交差がないことを示す場合は0を返し、交差することを示す場合は1を返します
内部では、1つの要素が別の要素によって完全に囲まれています
ptB.Within(poly1)
点が外側の内側にあることを示す場合は0を返しますポリゴンの場合、ポイントがポリゴン内にあることを示す 1 を返します。これは、
poly1.Contains(ptB)
の反対です。メイン オブジェクトとパラメータを変更するだけです。ポリゴンが 2 つだけあるようです
poly2.Overlaps(poly3)
は、重なり合わないことを示す場合は 0 を返し、重なり合うことを示す場合は 1 を返します
単純な地理データ処理ジオプロセシングを見てみましょう
ポリゴン:
交差点:poly3.Intersection(poly2)
和集合:poly3.Union(poly2)
差分:poly3.Difference(poly2)
補足:poly3.SymmetricDifference(poly2)
ジオメトリ:
< ;geom>.Buffer(< distance>) をジオメトリにバッファを追加するということは、ポイントラインをポリゴンに変えて太くすることを意味します
Python の関数 function、例外、module は、Python の教科書に記載されていますが、ここでは詳しく説明しません
上記は Python gdal チュートリアルです: filtering 、簡単な空間分析、関数、モジュールの内容については、PHP 中国語 Web サイト (m.sbmmt.com) をご覧ください。