QGIS Documentation - en to ja translation catalogue (122 entries)

en: Using Vector Layers
ja: ベクターレイヤを使う

en: This section summarizes various actions that can be done with vector layers.
ja: このセクションではベクタレイヤに対して行える様々な操作について紹介していきます.

en: Iterating over Vector Layer
ja: ベクターレイヤの反復処理

en: Iterating over the features in a vector layer is one of the most common tasks. Below is an example of the simple basic code to perform this task and showing some information about each feature. the ``layer`` variable is assumed to have a QgsVectorLayer object
ja: ベクターレイヤのフィーチャへの反復処理はもっとも頻繁に行う処理の一つです。次の例はこの処理を行う基本的なコードで、各フィーチャのいくつかの情報を表示します。 ``layer`` はQGSVectorLayerオブジェクトとしています。

en: Iterating over selected features
ja: 選択されたフィーチャへの反復処理

en: Convenience methods
ja: 便利な方法

en: For the above cases, and in case you need to consider selection in a vector layer in case it exist, you can use the :func:`getfeatures` method from the buil-in processing plugin, as follows:
ja: 上記の例や、ベクターレイヤ内でフィーチャの選択がありそれを考慮する必要がある場合にも、 下記のようにprocessingプラグインに組み込まれている :func:`getfeatures`  メソッドを使うことが出来ます。

en: This will iterate over all the features in the layer, in case there is no selection, or over the selected features otherwise.
ja: このメソッドは、フィーチャの選択がない場合はレイヤー中のすべてのフィーチャを、フィーチャの選択がある場合は選択されているフィーチャを反復処理します。

en: Iterating over a subset of features
ja: 一部のフィーチャへの反復処理

en: If you want to iterate over a given subset of features in a layer, such as those within a given area, you have to add a :obj:`QgsFeatureRequest` object to the :func:`getFeatures()` call. Here's an example
ja: もし所定の範囲内に含まれフィーチャのように、レイヤ中の所定のフィーチャにのみ処理を行いたい場合、:obj:`QgsFeatureRequest` オブジェクトを :func:`getFeatures()` に加えます。下記が例になります。

en: The request can be used to define the data retrieved for each feature, so the iterator returns all features, but return partial data for each of them.
ja: このリクエストは各フィーチャからどの情報を取得するかを定義するために使用することも出来ます。反復処理はすべてのフィーチャを返しますが、各フィーチャの特定の情報のみ返します。

en: Modifying Vector Layers
ja: ベクターレイヤの修正

en: Most vector data providers support editing of layer data. Sometimes they support just a subset of possible editing actions. Use the :func:`capabilities` function to find out what set of functionality is supported::
ja: ほとんどのベクターデータのプロバイダーはレイヤの編集をサポートしています. 一部の編集のみを認めている場合もあります. どんな機能が利用できるのかは :func:`capabilities` を使って調べることができます.

en: By using any of following methods for vector layer editing, the changes are directly committed to the underlying data store (a file, database etc). In case you would like to do only temporary changes, skip to the next section that explains how to do :ref:`modifications with editing buffer <editing-buffer>`.
ja: 以下で述べているどのベクターレイヤを編集するメソッドを使った場合も、元となるデータソース(ファイルやデータベースなど)に直接変更が反映されます。もし一時的な変更だけをしたいだけであれば、 :ref:`編集バッファでの修正 <editing-buffer>` 方法について説明している次のセクションまでスキップしてください。

en: Add Features
ja: フィーチャの追加

en: Create some :class:`QgsFeature` instances and pass a list of them to provider's :func:`addFeatures` method. It will return two values: result (true/false) and list of added features (their ID is set by the data store)::
ja: :class:`QgsFeature` インスタンスをいくつか作り、インスタンスの配列をプロバイダの :func:`addFeatures` に通します。これは二つの値を返します: 結果(true/false)と追加されたフィーチャの配列(これらのIDはデータストアによってセットされています)::

en: Delete Features
ja: フィーチャの削除

en: To delete some features, just provide a list of their feature IDs::
ja: フィーチャを削除するには、フィーチャのIDの配列を渡すだけです::

en: Modify Features
ja: フィーチャの修正

en: It is possible to either change feature's geometry or to change some attributes. The following example first changes values of attributes with index 0 and 1, then it changes the feature's geometry::
ja: フィーチャのジオメトリの変更も属性の変更もどちらも可能です。次のサンプルは最初にインデックス 0 と 1 の属性の値を変更し、その後にフィーチャのジオメトリを変更しています::

en: Adding and Removing Fields
ja: フィールドの追加または削除

en: To add fields (attributes), you need to specify a list of field defnitions. For deletion of fields just provide a list of field indexes. ::
ja: フィールド(属性)を追加するには、フィールドの定義の配列を指定する必要があります。フィールドを削除するにはフィールドのインデックスの配列を渡すだけです ::

en: Modifying Vector Layers with an Editing Buffer
ja: ベクターレイヤを編集バッファで修正する.

en: When editing vectors within QGIS application, you have to first start editing mode for a particular layer, then do some modifications and finally commit (or rollback) the changes. All the changes you do are not written until you commit them --- they stay in layer's in-memory editing buffer. It is possible to use this functionality also programmatically --- it is just another method for vector layer editing that complements the direct usage of data providers. Use this option when providing some GUI tools for vector layer editing, since this will allow user to decide whether to commit/rollback and allows the usage of undo/redo. When committing changes, all changes from the editing buffer are saved to data provider.
ja: QGISアプリケーションでベクターを編集するには、個々のレイヤを編集モードにしてから編集を行って最後に変更をコミット(もしくはロールバック)します。全ての変更はそれらをコミットするまでは書き込まれません --- これらはメモリ上の編集バッファに居続けます。これらの機能はプログラムで扱うことができます　--- これはデータプロバイダを直接使う方法を補完するベクターレイヤを編集する別の方法です。ベクターレイヤの編集機能をもったGUIツールを提供する際にこのオプションを使えば、ユーザにコミット/ロールバックをするのを決めさせられ、またundo/redoのような使い方をさせることができます。変更をコミットする時に、編集バッファの全ての変更はデータプロバイダに保存されます。

en: To find out whether a layer is in editing mode, use :func:`isEditing` --- the editing functions work only when the editing mode is turned on. Usage of editing functions::
ja: レイヤーが編集モードかどうかを知るには :func:`isEditing` を使います --- 編集機能は編集モードが有効になっているときだけ動きます。編集機能はこのように使います::

en: In order to make undo/redo work properly, the above mentioned calls have to be wrapped into undo commands. (If you do not care about undo/redo and want to have the changes stored immediately, then you will have easier work by :ref:`editing with data provider <editing>`.) How to use the undo functionality ::
ja: 適切に undo/redo が動くようにするには、上記で言及しているコマンドを undo コマンドでラップする必要があります。(もし undo/redo を気にしないで、逐一変更を保存するのであれば、 :ref:`データプロバイダでの編集 <editing>` で簡単に実現できるでしょう。) undo機能はこのように使います::

en: The :func:`beginEndCommand` will create an internal "active" command and will record subsequent changes in vector layer. With the call to :func:`endEditCommand` the command is pushed onto the undo stack and the user will be able to undo/redo it from GUI. In case something went wrong while doing the changes, the :func:`destroyEditCommand` method will remove the command and rollback all changes done while this command was active.
ja: :func:`beginEndCommand` は内部的に "アクティブな" コマンドを作成して、この後に続くベクターレイヤの変更を記録し続けます。　:func:`endEditCommand` を呼び出すことでundoスタックにコマンドがプッシュされ、ユーザがGUIからコマンドの undo/redo が可能になります。変更をしている途中でなにか問題が発生した場合は、 :func:`destroyEditCommand` メソッドでコマンドを削除してコマンドがアクティブであった時に行った全ての変更をロールバックするでしょう。

en: To start editing mode, there is :func:`startEditing` method, to stop editing there are :func:`commitChanges` and :func:`rollback()` --- however normally you should not need these methods and leave this functionality to be triggered by the user.
ja: 編集モードを始めるには :func:`startEditing` メソッドを使い、編集を止めるには :func:`commitChanges` か :func:`rollback()` を使います --- しかしながら通常はこれらのメソッドは使う必要がなく、この機能はユーザによって始められるでしょう。

en: Using Spatial Index
ja: 空間インデックスを使う

en: Spatial indexes can dramatically improve the performance of your code if you need to do frequent queries to a vector layer. Imagin, for instance, that you are writing an interpolation algorithm, and that for a given location you need to know the 10 closest point from a points layer,, in order to use those point for calculating the interpolated value. Without a spatial index, the only way for QGIS to find those 10 points is to compute the distance from each and every point to the specified location and then compare those distances. This can be a very time consuming task, specilly if it needs to be repeated fro several locations. If a spatial index exists for the layer, the operation is much more effective.
ja: 空間インデックスは、もしあなたが頻繁にベクターレイヤーに問い合わせをする必要がある場合、あなたのコードのパフォーマンスを劇的に改善することが出来ます。例えば、あなたが、補完値の計算に使用するために、与えられた場所に近接する10点をポイントレイヤーから求める必要がある、補完アルゴリズムを書いた場合を想像してください。空間インデックスが無い場合、QGISがこれらの10点を求めるためのただ一つの方法は、すべての点から指定の場所への距離を計算し、それらの距離を比較することです。これは、特に、いくつかの場所を求めるために繰り返す必要がある場合に、非常に時間のかかるタスクとなります。もし空間インデックスがレイヤに作成されている場合、処理はもっと効率的になります。

en: Think of a layer withou a spatial index as a telephone book in which telephone number are not orderer or indexed. The only way to find the telephone number of a given person is to read from the beginning until you find it.
ja: 空間インデックスの無いレイヤは、電話番号が順番に並んでいない、もしくはインデックスの無い電話帳と思ってください。所定の人の電話番号を見つける唯一の方法は、巻頭からその番号を見つけるまで読むだけです。

en: Spatial indexes are not created by default for a QGIS vector layer, but you can create them easily. This is what you have to do.
ja: 空間インデックスは、QGISのベクトルレイヤにはデフォルトでは作成されていません、しかし作成するのは簡単です。以下が必要な手順です。

en: create spatial index --- the following code creates an empty index::
ja: 空間インデックスを作成する --- 以下のコードは空のインデックスを作成する::

en: add features to index --- index takes :class:`QgsFeature` object and adds it to the internal data structure. You can create the object manually or use one from previous call to provider's :func:`nextFeature()` ::
ja: フィーチャにインデックスを追加する --- インデックスは :class:`QgsFeature` のオブジェクトを受け取り、これらをデータの内部構造に追加します。このオブジェクトは手動で作ることもできますし、プロバイダの :func:`nextFeature()` を事前に呼んで取り出したものを使うこともできます::

en: once spatial index is filled with some values, you can do some queries::
ja: 空間インデックスに何かしらの値が入れられると検索ができるようになります::

en: Writing Vector Layers
ja: ベクターレイヤの作成

en: You can write vector layer files using :class:`QgsVectorFileWriter` class. It supports any other kind of vector file that OGR supports (shapefiles, GeoJSON, KML and others).
ja: :class:`QgsVectorFileWriter` クラスを使ってベクターレイヤファイルを書き出す事ができます。これはOGRがサポートするいかなるベクターファイル(shapefiles, GeoJSON, KML そしてその他)をサポートしています。

en: There are two possibilities how to export a vector layer:
ja: ベクターレイヤをエクスポートする方法は二つあります:

en: from an instance of :class:`QgsVectorLayer`::
ja: :class:`QgsVectorLayer` インスタンスから::

en: The third parameter specifies output text encoding. Only some drivers need this for correct operation - shapefiles are one of those --- however in case you are not using international characters you do not have to care much about the encoding. The fourth parameter that we left as ``None`` may specify destination CRS --- if a valid instance of :class:`QgsCoordinateReferenceSystem` is passed, the layer is transformed to that CRS.
ja: 3番目のパラメータは出力の際の文字エンコーディングを指定します。いくつかのドライバーでは、正しい動作のために指定が必要なります - shapeファイルはそのうちの一つです --- しかしながら、あなたが様々な国の文字列を扱わない場合、エンコーディングには多くの注意を必要としません。 ``None`` としてある4番目のパラメータには、出力の空間参照系を指定する事が出来ます --- もし有効な :class:`QgsCoordinateReferenceSystem` インスタンスを与えられた場合、 レイヤーはその空間参照系に投影されます。

en: For valid driver names please consult the `supported formats by OGR`_ --- you should pass the value in `the "Code" column as the driver name. Optionally you can set whether to export only selected features, pass further driver-specific options for creation or tell the writer not to create attributes --- look into the documentation for full syntax.
ja: 有効なドライバー名は、  `supported formats by OGR`_  を調べて下さい ---  "Code" カラムの表記をドライバー名として渡します。　選択されたフィーチャのみの出力や、作成のためのドライバ特有のオプション、属性を作成しないようにクラスに指示するといった指定をすることも出来ます --- すべての構文についてはドキュメントを見てください。

en: directly from features::
ja: フィーチャから直接::

en: Memory Provider
ja: メモリープロバイダー

en: Memory provider is intended to be used mainly by plugin or 3rd party app developers. It does not store data on disk, allowing developers to use it as a fast backend for some temporary layers.
ja: メモリープロバイダーはプラグインやサードパーティアプリケーション開発者に主に使われるでしょう。これはディスクにデータを保存せず、開発者がテンポラリなレイヤーの高速なバックエンドとして使えるようになります。

en: The provider supports string, int and double fields.
ja: プロバイダは文字列と int と double をサポートします。

en: The memory provider also supports spatial indexing, which is enabled by calling the provider's :func:`createSpatialIndex` function. Once the spatial index is created you will be able to iterate over features within smaller regions faster (since it's not necessary to traverse all the features, only those in specified rectangle).
ja: メモリープロバイダーは空間インデックスもサポートしていて、プロバイダーの :func:`createSpatialIndex` を呼ぶことで有効になります。一度空間インデックスを作成したら小さい領域内でフィーチャのiterateが高速にできるようになります(これ以降は全てのフィーチャを順にたどる必要がなくなり、指定した短形内で収まります)。

en: A memory provider is created by passing ``"memory"`` as the provider string to the :class:`QgsVectorLayer` constructor.
ja: メモリープロバイダーは :class:`QgsVectorLayer` のコンストラクタに ``"memory"`` をプロバイダーの文字列として与えると作成されます。

en: The constructor also takes a URI defining the geometry type of the layer, one of: ``"Point"``, ``"LineString"``, ``"Polygon"``, ``"MultiPoint"``, ``"MultiLineString"``, or ``"MultiPolygon"``.
ja: コンストラクタはレイヤーのジオメトリの種類に指定したURLを与えることができます。この種類は次のものです: ``"Point"``, ``"LineString"``, ``"Polygon"``, ``"MultiPoint"``, ``"MultiLineString"``, ``"MultiPolygon"`` .

en: The URI can also specify the coordinate reference system, fields, and indexing of the memory provider in the URI. The syntax is:
ja: URIではメモリープロバイダーの座標参照系、属性フィールド、インデックスを指定することが出来ます。構文は、

en: Specifies the coordinate reference system, where definition may be any of the forms accepted by :func:`QgsCoordinateReferenceSystem.createFromString`
ja: 座標参照系を指定し、この定義は :func:`QgsCoordinateReferenceSystem.createFromString` で受け付ける事ができるどんな値でも置くことができます。

en: Specifies that the provider will use a spatial index
ja: プロバイダーが空間インデックスを使うことを指定します。

en: Specifies an attribute of the layer.  The attribute has a name, and optionally a type (integer, double, or string), length, and precision. There may be multiple field definitions.
ja: レイヤーの属性を指定します。属性は名前を持ち、オプションとして種類(integer, double, string)、長さと正確性を持ちます。複数のフィールドの定義を置くことになるでしょう。

en: The following example of a URI incorporates all these options::
ja: 次のサンプルは全てのこれらのオプションを含んだURLです::

en: The following example code illustrates creating and populating a memory provider::
ja: 次のサンプルコードはメモリープロバイダーを作成してデータ投入をしている様子です::

en: Finally, let's check whether everything went well::
ja: 最後にやったことを全て確認していきましょう::

en: Appearance (Symbology) of Vector Layers
ja: ベクタレイヤーの外観(シンボロジ)

en: When a vector layer is being rendered, the appearance of the data is given by **renderer** and **symbols** associated with the layer.  Symbols are classes which take care of drawing of visual representation of features, while renderers determine what symbol will be used for a particular feature.
ja: ベクタレイヤーがレンダリングされるとき、データの外観はレイヤーによって関連付けられた **レンダラー** と **シンボル** によって決定されます。シンボルはフィーチャの仮想的な表現を描画するクラスで、レンダラーはシンボルが個々のフィーチャで使われるかを決定します。

en: The renderer for a given layer can obtained as shown below:
ja: 指定したレイヤのレンダラーは下記のように得ることが出来ます

en: And with that reference, let us explore it a bit::
ja: この参照を利用して、少しだけ探索してみましょう::

en: There are several known renderer types available in QGIS core library:
ja: 次の表は QGIS コアライブラリに存在するいくつかのよく知られたレンダラーです:

en: Type
ja: タイプ

en: Class
ja: クラス

en: Description
ja: 詳細

en: Renders all features with the same symbol
ja: 全てのフィーチャを同じシンボルでレンダーします

en: Renders features using a different symbol for each category
ja: カテゴリごとに違うシンボルを使ってフィーチャをレンダーします

en: Renders features using a different symbol for each range of values
ja: それぞれの範囲の値によって違うシンボルを使ってフィーチャをレンダーします

en: There might be also some custom renderer types, so never make an assumption there are just these types. You can query :class:`QgsRendererV2Registry` singleton to find out currently available renderers.
ja: カスタムレンダラーのタイプになることもあるので、上記のタイプになるとは思い込まないでください。 :class:`QgsRendererV2Registry` シングルトンを検索して現在利用可能なレンダラーを見つけることもできます。

en: It is possible to obtain a dump of a renderer contents in text form --- can be useful for debugging::
ja: レンダラーの中身をテキストフォームにダンプすることできます --- デバッグ時に役に立つでしょう::

en: You can get the symbol used for rendering by calling :func:`symbol` method and change it with :func:`setSymbol` method (note for C++ devs: the renderer takes ownership of the symbol.)
ja: レンダリングが使っているシンボルは :func:`symbol` メソッドで取得することができ、 :func:`setSymbol` メソッドで変更することができます(C++開発者へメモ: レンダラーはシンボルのオーナーシップをとります)。

en: You can query and set attribute name which is used for classification: use :func:`classAttribute` and :func:`setClassAttribute` methods.
ja: 分類するのに使われる属性名を検索したりセットしたりすることができます: :func:`classAttribute` メソッドと:func:`setClassAttribute` メソッドを使います。

en: To get a list of categories::
ja: カテゴリの配列を取得するには::

en: Where :func:`value` is the value used for discrimination between categories, :func:`label` is a text used for category description and :func:`symbol` method returns assigned symbol.
ja: :func:`value` はカテゴリを区別にするのに使う値で、 :func:`label` はカテゴリの詳細に使われるテキストで、 :func:`symbol` メソッドは割り当てられているシンボルを返します。

en: The renderer usually stores also original symbol and color ramp which were used for the classification: :func:`sourceColorRamp` and :func:`sourceSymbol` methods.
ja: レンダラはたいていオリジナルのシンボルと識別をするためにカラーランプを保持しています: :func:`sourceColorRamp` メソッドと :func:`sourceSymbol` メソッドから呼び出せます。

en: This renderer is very similar to the categorized symbol renderer described above, but instead of one attribute value per class it works with ranges of values and thus can be used only with numerical attributes.
ja: このレンダラは先ほど暑かったカテゴリ分けシンボルのレンダラととても似ていますが、クラスごとの一つの属性値の代わりに領域の値として動作し、そのため数字の属性のみ使うことができます。

en: To find out more about ranges used in the renderer::
ja: レンダラで使われている領域の多くの情報を見つけるには::

en: you can again use :func:`classAttribute` to find out classification attribute name, :func:`sourceSymbol` and :func:`sourceColorRamp` methods.  Additionally there is :func:`mode` method which determines how the ranges were created: using equal intervals, quantiles or some other method.
ja: 属性名の分類を調べるために :func:`classAttribute` をまた使うことができ、 :func:`sourceSymbol` メソッドと :func:`sourceColorRamp` メソッドも使うことができます。さらに作成された領域の測定する :func:`mode` メソッドもあります: 等間隔や変位値、その他のメソッドと一緒に使います。

en: If you wish to create your own graduated symbol renderer you can do so as illustrated in the example snippet below (which creates a simple two class arrangement)::
ja: もし連続値シンボルレンダラを作ろうとしているのであれば次のスニペットの例で書かれているようにします(これはシンプルな二つのクラスを作成するものを取り上げています)::

en: For representation of symbols, there is :class:`QgsSymbolV2` base class with three derived classes:
ja: シンボルを表現するには、 :class:`QgsSymbolV2` ベースクラス由来の三つの派生クラスを使います:

en: :class:`QgsMarkerSymbolV2` - for point features
ja: :class:`QgsMarkerSymbolV2` - ポイントのフィーチャ用

en: :class:`QgsLineSymbolV2` - for line features
ja: :class:`QgsLineSymbolV2` - ラインのフィーチャ用

en: :class:`QgsFillSymbolV2` - for polygon features
ja: :class:`QgsFillSymbolV2` - ポリゴンのフィーチャ用

en: **Every symbol consists of one or more symbol layers** (classes derived from :class:`QgsSymbolLayerV2`). The symbol layers do the actual rendering, the symbol class itself serves only as a container for the symbol layers.
ja: **全てのシンボルは一つ以上のシンボルレイヤーから構成されます** (:class:`QgsSymbolLayerV2` の派生クラスです)。シンボルレイヤーは実際にレンダリングをして、シンボルクラス自信はシンボルレイヤのコンテナを提供するだけです。

en: Having an instance of a symbol (e.g. from a renderer), it is possible to explore it: :func:`type` method says whether it is a marker, line or fill symbol. There is a :func:`dump` method which returns a brief description of the symbol. To get a list of symbol layers::
ja: (例えばレンダラから)シンボルのインスタンスを持っていればそれの中身を調べる事ができます: :func:`type` メソッドはそれ自身がマーカか、ラインか、シンボルで満たさたものかを返します。 :func:`dump` メソッドはシンボルの簡単な説明を返します。シンボルレイヤーの配列を取得するにはこのようにします::

en: To find out symbol's color use :func:`color` method and :func:`setColor` to change its color. With marker symbols additionally you can query for the symbol size and rotation with :func:`size` and :func:`angle` methods, for line symbols there is :func:`width` method returning line width.
ja: シンボルが使っている色を得るには :func:`color` メソッドを使い、 :func:`setColor` でシンボルの色を変えます。マーカーシンボルは他にもシンボルのサイズと回転角をそれぞれ :func:`size` メソッドと :func:`angle` メソッドで取得することができ、ラインシンボルは :func:`width` メソッドでラインの幅を返します。

en: Size and width are in millimeters by default, angles are in degrees.
ja: サイズと幅は標準でミリメートルが使われ、角度は 度 が使われます。

en: As said before, symbol layers (subclasses of :class:`QgsSymbolLayerV2`) determine the appearance of the features.  There are several basic symbol layer classes for general use. It is possible to implement new symbol layer types and thus arbitrarily customize how features will be rendered. The :func:`layerType` method uniquely identifies the symbol layer class --- the basic and default ones are SimpleMarker, SimpleLine and SimpleFill symbol layers types.
ja: 前に述べたようにシンボルレイヤ(:class:`QgsSymbolLayerV2` のサブクラスです) はフィーチャの外観を決定します。一般的に使われるいくつかの基本となるシンボルレイヤのクラスがあります。これは新しいシンボルレイヤの種類を実装を可能とし、それによってフィーチャがどのようにレンダーされるかを任意にカスタマイズできます。 :func:`layerType` メソッドはシンボルレイヤクラスの一意に識別します --- 基本クラスは標準で SimpleMarker 、 SimpleLine 、 SimpleFill がシンボルレイヤのタイプとなります。

en: You can get a complete list of the types of symbol layers you can create for a given symbol layer class like this::
ja: 次のようにシンボルレイヤクラスを与えてシンプルレイヤを作成して、シンボルレイヤのタイプの完全なリストを取得することができます。

en: Output::
ja: 出力::

en: :class:`QgsSymbolLayerV2Registry` class manages a database of all available symbol layer types.
ja: :class:`QgsSymbolLayerV2Registry` クラスは利用可能な全てのシンボルレイヤタイプのデータベースを管理しています。

en: To access symbol layer data, use its :func:`properties` method that returns a key-value dictionary of properties which determine the appearance. Each symbol layer type has a specific set of properties that it uses. Additionally, there are generic methods :func:`color`, :func:`size`, :func:`angle`, :func:`width` with their setter counterparts. Of course size and angle is available only for marker symbol layers and width for line symbol layers.
ja: シンボルレイヤのデータにアクセスするには、 :func:`properties` メソッドを使い、これは表現方法を決定しているプロパティの辞書のキー値を返します。それぞれのシンボルレイヤタイプはそれが使っている特定のプロパティの集合を持っています。さらに、共通して使えるメソッドとして :func:`color`, :func:`size`, :func:`angle`, :func:`width` がそれぞれセッターと対応して存在します。もちろん size と angle はマーカーシンボルレイヤだけで利用可能で、 width はラインシンボルレイヤだけで利用可能です。

en: Imagine you would like to customize the way how the data gets rendered. You can create your own symbol layer class that will draw the features exactly as you wish. Here is an example of a marker that draws red circles with specified radius::
ja: あなたがデータをどうレンダーするかをカスタマイズしたいと考えているとします。あなたはあなたが思うままにフィーチャを描画する独自のシンボルレイヤクラスを作ることができます。次の例は指定した半径で赤い円を描画するマーカを示しています::

en: The :func:`layerType` method determines the name of the symbol layer, it has to be unique among all symbol layers. Properties are used for persistence of attributes. :func:`clone` method must return a copy of the symbol layer with all attributes being exactly the same. Finally there are rendering methods: :func:`startRender` is called before rendering first feature, :func:`stopRender` when rendering is done. And :func:`renderPoint` method which does the rendering. The coordinates of the point(s) are already transformed to the output coordinates.
ja: :func:`layerType` メソッドはシンボルレイヤーの名前を決定し、全てのシンボルレイヤーの中で一意になります。プロパティは属性の持続として使われます。 :func:`clone` メソッドは全ての全く同じ属性を含んだシンボルレイヤーのコピーを返さなくてはなりません。最後にレンダリングのメソッドについて: :func:`startRender` はフィーチャが最初にレンダリングされる前に呼び出され、 :func:`stopRender` はレンダリングが終わったら呼び出されます。そして :func:`renderPoint` メソッドでレンダリングを行います。ポイントの座標は出力対象の座標に常に変換されます。

en: For polylines and polygons the only difference would be in the rendering method: you would use :func:`renderPolyline` which receives a list of lines, resp. :func:`renderPolygon` which receives list of points on outer ring as a first parameter and a list of inner rings (or None) as a second parameter.
ja: ポリラインとポリゴンではレンダリングのメソッドが違うだけです: (ポリラインでは)それぞれのラインの配列を受け取る :func:`renderPolyline` を使います。 :func:`renderPolygon` は最初のパラメータを外輪としたポイントのリストと、２つ目のパラメータに内輪(もしくは None)のリストを受け取ります。

en: Usually it is convenient to add a GUI for setting attributes of the symbol layer type to allow users to customize the appearance: in case of our example above we can let user set circle radius. The following code implements such widget::
ja: 普通はユーザに外観をカスタマイズさせるためにシンボルレイヤータイプの属性を設定するGUIを追加すると使いやすくなります: 上記の例であればユーザは円の半径をセットできます。次のコードはwidgetの実装となります::

en: This widget can be embedded into the symbol properties dialog. When the symbol layer type is selected in symbol properties dialog, it creates an instance of the symbol layer and an instance of the symbol layer widget. Then it calls :func:`setSymbolLayer` method to assign the symbol layer to the widget. In that method the widget should update the UI to reflect the attributes of the symbol layer. :func:`symbolLayer` function is used to retrieve the symbol layer again by the properties dialog to use it for the symbol.
ja: このwidgetはシンボルプロパティのダイアログに組み込むことができます。シンボルプロパティのダイアログでシンボルレイヤータイプを選択したときにこれはシンボルレイヤーのインスタンスとシンボルレイヤー widget のインスタンスを作成します。そしてwidgetをシンボルレイヤーを割り当てるために :func:`setSymbolLayer` メソッドを呼び出します。このメソッドでwidgetがシンボルレイヤーの属性を反映するようUIを更新します。 :func:`symbolLayer` 関数はシンボルが使ってるプロパティダイアログがシンボルレイヤーを再度探すのに使われます。

en: On every change of attributes, the widget should emit :func:`changed()` signal to let the properties dialog update the symbol preview.
ja: いかなる属性の変更時でも、プロパティダイアログにシンボルプレビューを更新させるために widget は :func:`changed()` シグナルを発生します。

en: Now we are missing only the final glue: to make QGIS aware of these new classes. This is done by adding the symbol layer to registry. It is possible to use the symbol layer also without adding it to the registry, but some functionality will not work: e.g. loading of project files with the custom symbol layers or inability to edit the layer's attributes in GUI.
ja: 私達は最後につなげるところだけまだ扱っていません: QGIS にこれらの新しいクラスを知らせる方法です。これはレジストリにシンボルレイヤーを追加すれば完了です。レジストリに追加しなくてもシンボルレイヤーを使うことはできますが、いくつかの機能が動かないでしょう: 例えばカスタムシンボルレイヤーを使ってプロジェクトファイルを読み込んだり、GUIでレイヤーの属性を編集できないなど。

en: We will have to create metadata for the symbol layer::
ja: 私達はシンボルレイヤーのメタデータを作る必要があります::

en: You should pass layer type (the same as returned by the layer) and symbol type (marker/line/fill) to the constructor of parent class. :func:`createSymbolLayer` takes care of creating an instance of symbol layer with attributes specified in the `props` dictionary. (Beware, the keys are QString instances, not "str" objects). And there is :func:`createSymbolLayerWidget` method which returns settings widget for this symbol layer type.
ja: レイヤータイプ(レイヤーが返すのと同じもの)とシンボルタイプ(marker/line/fill)を親クラスのコンストラクタに渡します。 :func:`createSymbolLayer` は辞書の引数の `props` で指定した属性をもつシンボルレイヤーのインスタンスを作成をしてくれます。 (キー値は QString のインスタンスで、決して "str" のオブジェクトではないのに気をつけましょう) そして :func:`createSymbolLayerWidget` メソッドはこのシンボルレイヤータイプの設定 widget を返します。

en: The last step is to add this symbol layer to the registry --- and we are done.
ja: 最後にこのシンボルレイヤーをレジストリに追加します --- これで完了です。

en: It might be useful to create a new renderer implementation if you would like to customize the rules how to select symbols for rendering of features. Some use cases where you would want to do it: symbol is determined from a combination of fields, size of symbols changes depending on current scale etc.
ja: もしシンボルがフィーチャのレンダリングをどう行うかをカスタマイズしたいのであれば、新しいレンダラーの実装を作ると便利かもしれません。いくつかのユースケースとしてこんなことをしたいのかもしれません: フィールドの組み合わせからシンボルを決定する、現在の縮尺に合わせてシンボルのサイズを変更するなどなど。

en: The following code shows a simple custom renderer that creates two marker symbols and chooses randomly one of them for every feature::
ja: 次のコードは二つのマーカーシンボルを作成して全てのフィーチャからランダムに一つ選ぶ簡単なカスタムレンダラです::

en: The constructor of parent :class:`QgsFeatureRendererV2` class needs renderer name (has to be unique among renderers). :func:`symbolForFeature` method is the one that decides what symbol will be used for a particular feature. :func:`startRender` and :func:`stopRender` take care of initialization/finalization of symbol rendering. :func:`usedAttributes` method can return a list of field names that renderer expects to be present. Finally :func:`clone` function should return a copy of the renderer.
ja: 親クラスの :class:`QgsFeatureRendererV2` のコンストラクタはレンダラの名前(レンダラの中で一意になる必要があります)が必要です。 :func:`symbolForFeature` メソッドは個々のフィーチャでどのシンボルが使われるかを一つ決定します。 :func:`startRender` と :func:`stopRender` それぞれシンボルのレンダリングの初期化/終了を処理します。 :func:`usedAttributes` メソッドはレンダラが与えられるのを期待するフィールド名のリストを返すことができます。最後に :func:`clone` 関数はレンダラーのコピーを返すでしょう。

en: Like with symbol layers, it is possible to attach a GUI for configuration of the renderer. It has to be derived from :class:`QgsRendererV2Widget`. The following sample code creates a button that allows user to set symbol of the first symbol::
ja: シンボルレイヤー同様、レンダラの設定をGUIからいじることができます。これは :class:`QgsRendererV2Widget` の派生クラスとなります。次のサンプルコードではユーザが最初のシンボルのシンボルをセットするボタンを作成しています(訳注: サンプルを見ると色を変更しているので原文が間違っていると思われる)::

en: The constructor receives instances of the active layer (:class:`QgsVectorLayer`), the global style (:class:`QgsStyleV2`) and current renderer. If there is no renderer or the renderer has different type, it will be replaced with our new renderer, otherwise we will use the current renderer (which has already the type we need). The widget contents should be updated to show current state of the renderer. When the renderer dialog is accepted, widget's :func:`renderer` method is called to get the current renderer --- it will be assigned to the layer.
ja: コンストラクタはアクティブなレイヤー(:class:`QgsVectorLayer`)とグローバルなスタイル(:class:`QgsStyleV2`)と現在のレンダラのインスタンスを受け取ります。もしレンダラが無かったり、レンダラが違う種類のものだったら、コンストラクタは新しいレンダラに差し替えるか、そうでなければ現在のレンダラー(必要な種類を持つでしょう)を使います。widgetの中身はレンダラーの現在の状態を表示するよう更新されます。レンダラダイアログが受け入れられたときに、現在のレンダラを取得するために widget の :func:`renderer` メソッドが呼び出されます。

en: The last missing bit is the renderer metadata and registration in registry, otherwise loading of layers with the renderer will not work and user will not be able to select it from the list of renderers. Let us finish our RandomRenderer example::
ja: 最後のちょっとした作業はレンダラのメタデータとレジストリへの登録で、これらをしないとレンダラのレイヤーの読み込みは動かなく、ユーザはレンダラのリストから選択することができないでしょう。では、私達の RandomRenderer の例を終わらせましょう::

en: Similarly as with symbol layers, abstract metadata constructor awaits renderer name, name visible for users and optionally name of renderer's icon. :func:`createRenderer` method passes :class:`QDomElement` instance that can be used to restore renderer's state from DOM tree. :func:`createRendererWidget` method creates the configuration widget. It does not have to be present or can return `None` if the renderer does not come with GUI.
ja: シンボルレイヤーと同様に、abstract metadataのコンストラクタはレンダラの名前を受け取るのを期待して、この名前はユーザに見え、レンダラのアイコンの追加の名前となります。 :func:`createRenderer` メソッドには :class:`QDomElement` のインスタンスを渡してレンダラの状態を DOM ツリーから復元するのに使います。 :func:`createRendererWidget` メソッドは設定のwidgetを作成します。これは必ず存在する必要はなく、もしレンダラがGUIからいじらないのであれば `None` を返すことができます。

en: To associate an icon with the renderer you can assign it in :class:`QgsRendererV2AbstractMetadata` constructor as a third (optional) argument --- the base class constructor in the RandomRendererMetadata :func:`__init__` function becomes::
ja: レンダラにアイコンを関連付けるには :class:`QgsRendererV2AbstractMetadata` のコンストラクタの三番目の引数(オプション)に指定することができます --- RandomRendererMetadata の :func:`__init__` 関数の中の基本クラスのコンストラクタはこうなります::

en: The icon can be associated also at any later time using :func:`setIcon` method of the metadata class. The icon can be loaded from a file (as shown above) or can be loaded from a `Qt resource <http://qt.nokia.com/doc/4.5/resources.html>`_ (PyQt4 includes .qrc compiler for Python).
ja: アイコンはあとからメタデータクラスの :func:`setIcon` を使って関連付けることもできます。アイコンはファイルから読み込むこと(上記を参考)も `Qt のリソース <http://qt.nokia.com/doc/4.5/resources.html>`_ から読み込むこともできます(PyQt4 はパイソン向けの .qrc コンパイラを含んでいます)。

en: creating/modifying symbols
ja: シンボルの作成や修正

en: working with style (:class:`QgsStyleV2`)
ja: スタイルの使い方(:class:`QgsStyleV2`)

en: working with color ramps (:class:`QgsVectorColorRampV2`)
ja: カラーランプの使い方 (:class:`QgsVectorColorRampV2`)

en: rule-based renderer
ja: ルールベースのレンダラ

en: exploring symbol layer and renderer registries
ja: シンボルレイヤーとレンダラのレジストリを調べる方法

en: vector layers
ja: ベクターレイヤー

en: iterating
ja: 反復処理

en: features
ja: フィーチャー

en: editing
ja: 編集

en: spatial index
ja: 空間インデックス

en: using
ja: 使用する

en: writing
ja: 書き込み

en: memory provider
ja: メモリープロバイダー
