Outdated version of the documentation. Find the latest one here.

21. 回答シート

21.1. Results For 最初のレイヤーを追加する

21.1.1. basic 準備

You should see a lot of lines, symbolizing roads. All these lines are in the vector layer that you just loaded to create a basic map.

テキストに戻る

21.2. Results For インターフェイスのあらまし

21.2.1. basic あらまし (パート 1)

インターフェイスのレイアウトを示す以前の画像を参照し、画面要素の名称と機能を覚えていることを確認してください。

テキストに戻る

21.2.2. basic あらまし (パート 2)

  1. 名前を付けて保存

  2. レイヤーにズーム

  3. ヘルプ

  4. 描画 オン/オフ

  5. ラインを計測

テキストに戻る

21.3. Results For ベクターデータで作業する

21.3.1. basic Shapefiles

There should be five layers on your map:

  • 場所

  • water
  • buildings
  • rivers and
  • roads.

Back to text

21.3.2. basic Databases

All the vector layers should be loaded into the map. It probably won’t look nice yet though (we’ll fix the ugly colors later).

Back to text

21.4. Results For シンボル

21.4.1. basic

  • 色が期待通りに変わっているか確認してください。

  • It is enough to change only the water layer for now. An example is below, but may look different depending on the color you chose.
../../../_images/answer_water_blue.png

ノート

If you want to work on only one layer at a time and don’t want the other layers to distract you, you can hide a layer by clicking in the check box next to its name in the Layers list. If the box is blank, then the layer is hidden.

テキストに戻る

21.4.2. basic シンボルの構造

これであなたの地図はこのように見えていると思います:

../../../_images/answer_symbology1.png

あなたが初心者レベルのユーザーであれば、ここで止めた方が良いかもしれません。

  • 上の方法を使って残りのレイヤーすべての色とスタイルを変更します。

  • オブジェクトにはできるだけ本来の色を使うようにしてください。たとえば、道路は赤や青ではなく、灰または黒であるべきです。

  • Also feel free to experiment with different Fill Style and Border Style settings for the polygons.

テキストに戻る

21.4.3. moderate シンボルレイヤー

  • 建物 レイヤーは好きなようにカスタマイズできますが、地図上で離れている異なるレイヤーに容易に伝えられるものでなければなりません。

こちらがサンプルです:

../../../_images/answer_buildings_symbology.png

テキストに戻る

21.4.4. moderate シンボルのレベル

To make the required symbol, you need two symbol layers:

../../../_images/answer_road_symbology.png

The lowest symbol layer is a broad, solid yellow line. On top of it there is a slightly thinner solid gray line.

  • If your symbol layers resemble the above but you’re not getting the result you want, check that your symbol levels look something like this:

    ../../../_images/answer_road_symbol_levels.png
  • これであなたの地図は次のように見えるようになったはずです:

    ../../../_images/target_road_symbology.png

テキストに戻る

21.4.5. hard シンボルレベル

  • あなたのシンボルレベルをこれらの値に合わせてください:

../../../_images/answer_road_symbol_layers.png
  • 値をいろいろ試して様々な結果を取得してみてください。

  • 次の演習を続ける前にオリジナルの地図を再び開いてください。

テキストに戻る

21.5. Results For 属性データ

21.5.1. basic 属性データ

The NAME field is the most useful to show as labels. This is because all its values are unique for every object and are very unlikely to contain NULL values. If your data contains some NULL values, do not worry as long as most of your places have names.

テキストに戻る

21.6. Results For ラベルツール

21.6.1. moderate ラベルのカスタマイズ (パート 1)

今、地図はマーカー・ポイントを示さなければならず、ラベルは 2.0 mm だけオフセットされなければなりません:マーカーとラベルのスタイルは、両方が地図上ではっきりと見えることを可能にする必要があります。

../../../_images/customised_labels_one.png

テキストに戻る

21.6.2. moderate ラベルのカスタマイズ (パート 2)

一つの可能​​な解ではこの最終製品があります:

../../../_images/possible_outcome_map.png

この結果に到着するには:

  • フォントサイズ 10ラベル距離 1.5 mmシンボル幅シンボルサイズ 3.0 mm を使用します。

  • さらに、この例では characterラベルをラップ オプションを使用します。

    ../../../_images/wrap_character_settings.png
  • このフィールドに space と入力し 適用 をクリックして、同じ効果を達成します。この場合には、地名の一部は非常に長く、その結果複数の行を持つ名前で、非常にユーザーに優しくはありません。この設定が自分の地図にとってより適切と見つけるかもしれません。

テキストに戻る

21.6.3. hard データ定義された設定を使用して

  • まだ編集モードで、 FONT_SIZE 値をお好きなように設定してください。例では、町に 16 、郊外に 14 、地域に 12 、集落に 10 を使用しています。

  • 編集モードを抜ける前に忘れずに変更を保存してください。

  • places レイヤーに対する Text 書式設定オプションに戻り、フォントサイズのデータ​​の上書きドロップダウンの 属性フィールド 中で FONT_SIZE を選択:

    ../../../_images/font_size_override.png

    結果は、上記の値を使用している場合、このようになります。

    ../../../_images/font_override_results.png

テキストに戻る

21.7. Results For 分類

21.7.1. moderate 分類を改善

  • 国境を取り除くために、レッスンの最初の練習と同様の方法を使用します。

    ../../../_images/gradient_map_no_pen.png

使用した設定は同じでなくてよいですが、値は Classes = 6モード = 自然なブレーク(ジェンクス) で(そしてもちろん同じ色を使用して)、地図は次のようになります。

../../../_images/gradient_map_new_mode.png

テキストに戻る

21.8. Results For 新しいベクターデータセットを作成する

21.8.1. basic デジタイジング

シンボル体系は重要ではありませんが、結果は多かれ少なかれこのようになります。

../../../_images/routes_layer_result.png

テキストに戻る

21.8.2. moderate トポロジ: リングツールを追加

正確な形状は重要ではありませんが、あなたの地物の中央には穴が空くことになります。こちらのように。

../../../_images/ring_tool_result.png
  • 次のツールのための演習を続行する前に編集を取り消します。

テキストに戻る

21.8.3. moderate トポロジ: パートを追加ツール

  • 最初に Bontebok National Park を選択します:

../../../_images/park_selected.png
  • ここで新しいパートを追加します:

../../../_images/new_park_area.png
  • 次のツールのための演習を続行する前に編集を取り消します。

テキストに戻る

21.8.4. hard 地物をマージ

  • 選択した地物のマージ ツールを使う際には、最初にマージしたいポリゴンを両方選んでください。

  • 1 の属性の OGC_FID を持つ地物をソースとして使用します(ダイアログでそのエントリをクリックし、それから 選択地物から属性を取る ボタンをクリックしてください):

ノート

別のデータセットを使用している場合、可能性が高いのはあなたの

元々のポリゴンの OGC_FID1 にはならないでしょう。 OGC_FID を持っている地物だけを選択してください。

../../../_images/merge_feature_dialog.png

ノート

選択地物の属性をマージ ツールを使用すると、ジオメトリは別々のまま、それらに同じ属性を与えます。

テキストに戻る

21.8.5. moderate フォーム

type について、道路がなりうるタイプの量は明らかに限られており、そしてこのレイヤーのための属性テーブルをチェックすると、それらが事前定義されていることがわかります。

  • ウィジェットを 値マップ に設定して レイヤーからデータをロード をクリックしてください。

  • ラベル ドロップダウンで roads を、 説明 オプションの両方について highway を選択します:

    ../../../_images/value_map_settings.png
  • Ok を3回クリックしてください。

  • 今街路上で 識別 ツールを使用している場合は、編集モードがアクティブな間、出てくるダイアログは次のようになります。

    ../../../_images/highway_as_value_map.png

テキストに戻る

21.9. Results For ベクター分析

21.9.1. moderate Extract Your Layers from OSM Data

For the purpose of this exercise, the OSM layers which we are interested in are multipolygons and lines. The multipolygons layer contains the data we need in order to produce the houses, schools and restaurants layers. The lines layer contains the roads dataset.

The Query Builder is found in the layer properties:

../../../_images/query_builder.png

Using the Query Builder against the multipolygons layer, create the following queries for the houses, schools, restaurants and residential layers:

../../../_images/houses_query.png ../../../_images/schools_query.png ../../../_images/restaurants_query.png

Once you have entered each query, click OK. You’ll see that the map updates to show only the data you have selected. Since you need to use again the multipolygons data from the OSM dataset, at this point, you can use one of the following methods:

  • Rename the filtered OSM layer and re-import the layer from osm_data.osm, OR
  • Duplicate the filtered layer, rename the copy, clear the query and create your new query in the Query Builder.

ノート

Although OSM’s building field has a house value, the coverage in your area - as in ours - may not be complete. In our test region, it is therefore more accurate to exclude all buildings which are defined as anything other than house. You may decide to simply include buildings which are defined as house and all other values that have not a clear meaning like yes.

To create the roads layer, build this query against OSM’s lines layer:

../../../_images/roads_query.png

You should end up with a map which looks similar to the following:

../../../_images/osm_queries_result.png

テキストに戻る

21.9.2. basic 高校からの距離

  • あなたのバッファダイアログはこのように見えるはずです:

    ../../../_images/schools_buffer_setup.png

    The Buffer distance is 1000 meters (i.e., 1 kilometer).

  • The Segments to approximate value is set to 20. This is optional, but it’s recommended, because it makes the output buffers look smoother. Compare this:

    ../../../_images/schools_buffer_5.png

    これに:

    ../../../_images/schools_buffer_20.png

The first image shows the buffer with the Segments to approximate value set to 5 and the second shows the value set to 20. In our example, the difference is subtle, but you can see that the buffer’s edges are smoother with the higher value.

テキストへ 戻る

21.9.3. basic レストランからの距離

To create the new houses_restaurants_500m layer, we go through a two step process:

  • 最初に、レストランの周囲に500m のバッファを作成し、地図にレイヤーを追加します:

    ../../../_images/restaurants_buffer.png ../../../_images/restaurants_buffer_result.png
  • Next, select buildings within that buffer area:

    ../../../_images/select_within_restaurants.png
  • Now save that selection to our new houses_restaurants_500m layer:

    ../../../_images/save_selection_restaurants.png

これであなたの地図には道路から50m 以内、学校から1km 以内、そしてレストランから500m 以内の建物だけが表示されます:

../../../_images/restaurant_buffer_result.png

Back to text

21.10. Results For ラスター分析

21.10.1. basic 角度を計算

  • Set your DEM (Terrain analysis) dialog up like this:

    ../../../_images/answer_dem_aspect.png

結果:

../../../_images/answer_aspect_result.png

テキストに戻る

21.10.2. moderate 傾斜を計算 (2度と5度未満)

  • ラスター計算機 ダイアログをこのように設定します。

    ../../../_images/answer_raster_calculator_slope.png
  • For the 5 degree version, replace the 2 in the expression and file name with 5.

結果:

  • 2 度:

    ../../../_images/answer_2degree_result.png
  • 5 度:

    ../../../_images/answer_5degree_result.png

テキストに戻る

21.11. Results For 分析を完了させる

21.11.1. moderate ラスターからベクター

  • Open the Query Builder by right-clicking on the all_terrain layer in the Layers list, select the General tab.
  • 次に、"suitable" = 1 クエリを構築します。

  • OK をクリックしてこの条件が満たされていないすべてのポリゴンをフィルタリングします。

オリジナルのラスター上で閲覧するとその領域は完全にオーバーラップされるはずです:

../../../_images/polygonize_raster.png
  • You can save this layer by right-clicking on the all_terrain layer in the Layers list and choosing Save As..., then continue as per the instructions.

テキストに戻る

21.11.2. moderate 結果を精査

Intersect ツールによって new_solution レイヤー中の建物の一部が「スライス」されることがあることに気づくことがあります。これは、建物の一部のみ - それゆえ資産の一部のみ -が適した地形の上にあることを示しています。したがって、賢明にデータセットから、これらの建物を排除できます

テキストに戻る

21.11.3. moderate 分析を改善する

現時点ではあなたの分析は次のように見えるはずです:

../../../_images/new_solution_example.png

全ての方向に100メートルのための連続円形領域を考えます。

../../../_images/circle_100.png

それは半径100メートルより大きい場合、(すべての方向から)、その大きさから100m減算して、それが途中で放置された部分になります。

../../../_images/circle_with_remainder.png

そのため、既存の suitable_terrain ベクターレイヤー上で100メートルの 内部バッファ を実行できます。バッファ機能の出力においては、元のレイヤーのどんな残りも、100メートルを超えて適した地形がある領域を表すことになります。

証明するために:

  • ベクター ‣ ジオプロセッシングツール ‣ バッファ に行き、バッファダイアログを開きます。

  • このように設定します:

    ../../../_images/suitable_terrain_buffer.png
  • 10 のセグメントで -100 のバッファ距離で suitable_terrain レイヤーを使用します。(地図が投影CRSを使用しているため、距離は自動的にメートル単位です。)

  • 出力を exercise_data/residential_development/ 中に suitable_terrain_continuous100m.shp として保存します。

  • 必要に応じて、あなたのオリジナルの suitable_terrain レイヤーの上に新しいレイヤーを移動してください。

作業結果は次のように見えるはずです:

../../../_images/suitable_buffer_results.png
  • ここで 位置で選択 ツール( ベクター ‣ 研究のツール ‣ 位置で選択 )を使用します。

  • このように設定します:

    ../../../_images/select_by_location.png
  • suitable_terrain_continuous100m.shp の中の地物に交差する new_solution 中の地物を選択します。

結果はこちらです:

../../../_images/buffer_select_result.png

黄色の建物が選択されています。建物の一部は、新しい suitable_terrain_continuous100m レイヤー外に一部が落ちるものの、それらは元の suitable_terrain レイヤー範囲内に十分にあり、したがって私たちの要件のすべてを満たしています。

  • 選択を exercise_data/residential_development/ 下に final_answer.shp として保存してください。

テキストに戻る

21.12. Results For WMS

21.12.1. basic 別のWMSレイヤーを追加します

地図は次のようになります(レイヤーを整列し直す必要があるかもしれません):

../../../_images/geology_layer_result.png

テキストに戻る

21.12.2. moderate 新しいWMSサーバーの追加

  • 新しいサーバーとそのサーバー上でホストされているように、適切なレイヤーを追加する前と同じアプローチを使用します。

    ../../../_images/add_ogc_server.png ../../../_images/add_bluemarble_layer.png
  • Swellendam 領域にズームインした場合、このデータセットは低解像度を持っていることに気づくでしょう:

../../../_images/low_resolution_dataset.png

したがって、現在の地図にこのデータを使用しない方が良いです。ブルーマーブルデータは、グローバルまたは全国規模での方が適しています。

テキストに戻る

21.12.3. moderate WMSサーバーの検索

You may notice that many WMS servers are not always available. Sometimes this is temporary, sometimes it is permanent. An example of a WMS server that worked at the time of writing is the World Mineral Deposits WMS at http://apps1.gdr.nrcan.gc.ca/cgi-bin/worldmin_en-ca_ows. It does not require fees or have access constraints, and it is global. Therefore, it does satisfy the requirements. Keep in mind, however, that this is merely an example. There are many other WMS servers to choose from.

テキストに戻る

21.13. Results For データベースの概念

21.13.1. basic 住所テーブルのプロパティ

理論上の住所テーブルのために、次のプロパティを保存したい場合があります:

House Number
Street Name
Suburb Name
City Name
Postcode
Country

住所オブジェクトを表すために、テーブルを作成するとき、これらのプロパティのそれぞれを表現するために列を作成し、SQL準拠し、おそらく短縮名とそれらに名前を付けるでしょう:

house_number
street_name
suburb
city
postcode
country

テキストに戻る

21.13.2. basic People(人々)テーブルを正規化する

people テーブルの主要な問題は、人の住所全体を含む単一の住所フィールドが存在することです。以前このレッスンでは、私たちの理論 address テーブルを考える、私たちは住所が多くの異なる特性で構成されていることを知っています。すべてのこれらのプロパティを1つのフィールド内に格納することにより、データを更新して照会することがはるかに困難にします。そこで、様々なプロパティに住所フィールドを分割する必要があります。これは、次のような構造を持つテーブルを与えるだろう:

id |     name      | house_no |  street_name   |    city    |   phone_no
 --+---------------+----------+----------------+------------+-----------------
 1 | Tim Sutton    |     3    | Buirski Plein  | Swellendam | 071 123 123
 2 | Horst Duester |     4    | Avenue du Roix | Geneva     | 072 121 122

ノート

次のセクションでは、さらに当社のデータベースの構造を改善するために、この例で使用することができ、外部キーの関係について学びます。

テキストに戻る

21.13.3. moderate 人々テーブルのさらなる正規化

people テーブルは現在はこのようになっています:

id |     name     | house_no | street_id |  phone_no
---+--------------+----------+-----------+-------------
 1 | Horst Duster |        4 |         1 | 072 121 122

street_id 列は people オブジェクトと関連 street オブジェクト、 streets テーブルにある、の間の「1対多」関係を表します。

テーブルをさらに正規化する一つの方法は、名前のフィールドを に分割することです:

id | first_name | last_name  | house_no | street_id |  phone_no
---+------------+------------+----------+-----------+------------
 1 |    Horst   |   Duster   |     4    |     1     | 072 121 122

また、町名や都市名と国に対して別々のテーブルを作成し、「1対多」関係を介して私たちの people テーブルにそれらをリンクできます:

id | first_name | last_name | house_no | street_id | town_id | country_id
---+------------+-----------+----------+-----------+---------+------------
 1 |    Horst   |   Duster  |     4    |     1     |    2    |     1

これを表現するER図は次のようになります:

../../../_images/er-people-normalised-example.png

テキストに戻る

21.13.4. moderate 人々テーブルを作成します

正しい人々テーブルを作成するために必要なSQLは:

create table people (id serial not null primary key,
                     name varchar(50),
                     house_no int not null,
                     street_id int not null,
                     phone_no varchar null );

テーブルのスキーマは(\d people と入力します)このようになります:

Table "public.people"

Column     |         Type          |                      Modifiers
-----------+-----------------------+-------------------------------------
id         | integer               | not null default
           |                       | nextval('people_id_seq'::regclass)
name       | character varying(50) |
house_no   | integer               | not null
street_id  | integer               | not null
phone_no   | character varying     |
Indexes:
  "people_pkey" PRIMARY KEY, btree (id)

ノート

説明のために、FKEY制約は意図的に省略しています。

テキストへ戻る

21.13.5. basic DROPコマンド

people テーブルは streets テーブルへの外部キー制約があるため、DROPコマンドは、このケースでは動作しない理由があります。これは、 streets テーブルをドロップする(または削除する)と、存在しない streets データへの参照が people テーブルに残ることを意味します。

ノート

CASCADE コマンドを使用して streets テーブルを強制的に削除することは可能ですが、これは peoplestreets テーブルへの関係づけられていた他のテーブルも削除します。注意して使用してください!

テキストへ戻る

21.13.6. basic 新しい街路を挿入

使用する必要があるSQLコマンドは、(選択した名前を持つ通りの名前を置き換えできます)、このようになります:

insert into streets (name) values ('Low Road');

テキストへ戻る

21.13.7. moderate 外部キー関係に新しい人を追加

これが正しいSQL文です:

insert into streets (name) values('Main Road');
insert into people (name,house_no, street_id, phone_no)
  values ('Joe Smith',55,2,'072 882 33 21');

街路テーブルを再び(以前のようにselect文を使用して)見ると、 主要道路 エントリのための id2 であることがわかるでしょう。

だから上では数 2 を入力するしかできなかったでしょう。私たちが上記のエントリで完全に書き出された 主要道路 を見ていないにもかかわらず、データベースはそれを 2 という street_id 値を持つものと関連付けできるでしょう。

ノート

すでに新しい street オブジェクトを追加している場合、新しい 主要道路 のIDは 2 でなく 3 だったということがあるかもしれません。

テキストへ 戻る

21.13.8. moderate 街路名を返す

これが使用すべき正しいSQL文です:

select count(people.name), streets.name
from people, streets
where people.street_id=streets.id
group by streets.name;

結果::

count |    name
------+-------------
    1 | Low Street
    2 | High street
    1 | Main Road
(3 rows)

ノート

テーブル名をフィールド名の接頭辞にしていることに気づくでしょう(例えばpeople.nameとstreets.name)。フィールド名があいまいな(つまり、データベース内のすべてのテーブル間で一意ではない)時はいつでもこれが行われる必要があります。

テキストへ戻る

21.14. Results For 空間クエリ

21.14.1. basic 空間クエリで使用される単位

例のクエリで使用されている単位は度です。それはレイヤーが使用しているCRSがWGS 84であるためです。これは地理的CRSです、つまりその単位は度であることを意味します。投影CRSは、UTM投影でのように、メートル単位です。

クエリを書くときはレイヤーのCRSがどの単位かを知る必要があることを忘れないでください。これにより期待する結果が返されるクエリを記述できるでしょう。

テキストへ戻る

21.14.2. basic 空間索引を作成する

CREATE INDEX cities_geo_idx
  ON cities
  USING gist (the_geom);

テキストへ戻る

21.15. Results For ジオメトリ構築

21.15.1. moderate ラインストリングを作成する

alter table streets add column the_geom geometry;
alter table streets add constraint streets_geom_point_chk check
     (st_geometrytype(the_geom) = 'ST_LineString'::text OR the_geom IS NULL);
insert into geometry_columns values ('','public','streets','the_geom',2,4326,
     'LINESTRING');
create index streets_geo_idx
  on streets
  using gist
  (the_geom);

テキストへ戻る

21.15.2. moderate テーブルをリンクする

delete from people;
alter table people add column city_id int not null references cities(id);

(QGISで都市をキャプチャ)

insert into people (name,house_no, street_id, phone_no, city_id, the_geom)
   values ('Faulty Towers',
           34,
           3,
           '072 812 31 28',
           1,
           'SRID=4326;POINT(33 33)');

insert into people (name,house_no, street_id, phone_no, city_id, the_geom)
   values ('IP Knightly',
           32,
           1,
           '071 812 31 28',
           1,F
           'SRID=4326;POINT(32 -34)');

insert into people (name,house_no, street_id, phone_no, city_id, the_geom)
   values ('Rusty Bedsprings',
           39,
           1,
           '071 822 31 28',
           1,
           'SRID=4326;POINT(34 -34)');

次のエラーメッセージが出ている場合:

ERROR:  insert or update on table "people" violates foreign key constraint
        "people_city_id_fkey"
DETAIL: Key (city_id)=(1) is not present in table "cities".

そのときは都市テーブルのポリゴンを作成して実験している間、それらのいくつかを削除してやり直してしまっていることを意味します。都市テーブルのエントリをチェックして、何らかの存在する id を使用するだけです。

テキストに戻る

21.16. Results For 簡易地物モデル

21.16.1. moderate 表を投入

create table cities (id serial not null primary key,
                     name varchar(50),
                     the_geom geometry not null);
 alter table cities
 add constraint cities_geom_point_chk
 check (st_geometrytype(the_geom) = 'ST_Polygon'::text );

テキストに戻る

21.16.2. moderate GEOMETRY_COLUMNS表を投入

insert into geometry_columns values
      ('','public','cities','the_geom',2,4326,'POLYGON');

テキストに戻る

21.16.3. hard ジオメトリを追加する

select people.name,
       streets.name as street_name,
       st_astext(people.the_geom) as geometry
from   streets, people
where  people.street_id=streets.id;

結果::

     name     | street_name |   geometry
--------------+-------------+---------------
 Roger Jones  | High street |
 Sally Norman | High street |
 Jane Smith   | Main Road   |
 Joe Bloggs   | Low Street  |
 Fault Towers | Main Road   | POINT(33 -33)
(5 rows)

ご覧のとおり、私たちの制限ではデータベースへの null の追加を認めています。

テキストに戻る