オブジェクトの属性を抽出してラベル表示

using DotSpatial.Controls;
using DotSpatial.Symbology;

//コントロールの変数 ラベルレイヤーを生成
IMapLabelLayer labelLayer = new MapLabelLayer();
//ラベル整飾 を生成
ILabelCategory category = labelLayer.Symbology.Categories[0];
//表示の方法
[NAME]、[STATE]はフィールド名
\nは改行コード

category.Expression = “[NAME]\n: [STATE]”;
//LINQ見たいな構造、SQLでも似たようなもの
//[NAME]が ごにょ か ごにょごにょ を選択
//大事なのは、shapeの属性が、UTF-8に統一した方が良いかも
//もし変更していなければ、エンコードを調べて変換の必要性がある。
//フィールド名も日本語OKだけど長いものは使えない
category.FilterExpression = “[NAME] = ごにょ OR [NAME] = ごにょごにょ”;
//バックのカラーをどうするか
category.Symbolizer.BackColorEnabled = true;
category.Symbolizer.BackColor = Color.FromArgb(128, Color.LightBlue);
//枠の線はいるのか?
category.Symbolizer.BorderVisible = true;
category.Symbolizer.FontStyle = FontStyle.Bold;
category.Symbolizer.FontColor = Color.DarkRed;
//どの辺に表示するのか
category.Symbolizer.Orientation = ContentAlignment.MiddleCenter;
category.Symbolizer.Alignment = StringAlignment.Center;
//マップレイヤーのラベルを表示の指示
mylayer.ShowLabels = true;
//割り当てる
mylayer.LabelLayer = labelLayer;

NoName_20151216_004855_No-00

表示は、自動調整される。
全くスケール制御していないが、core i7で落ちることもない。

NoName_20151216_005226_No-00

4コアしか稼働していないがそんなにストレスはない。

ノートブックで稼働予定なので、CPUとメモリは、Core 5 のメモリ4G以上ということになる。

NoName_20151216_005124_No-00

プロジェクションの相違でも問題なく表示される。

日本のGIS PC-○○あるけど、それよりも多分優秀かもしれん。
というのも、稼働時には、

NoName_20151216_010109_No-00

300MBの属性付SHPを表示、ラベルを数万表示している。
全くスケール制御なし。 GDIのみで1:20秒 geforceノートだったらもっと早くなるかも?

こんな感じで
const sampler_t myLinearSamplerObj = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_LINEAR;

__kernel void myOclkDoProc(
__read_write image2d_t inoutImage
)
{
// For Compile Test
const float4 oldValue = read_imagef(inoutImage, myLinearSamplerObj, (float2)(0, 0));
write_imagef(inoutImage, (int2)(0, 0), oldValue + (float4)(1, 0, 0, 0));
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です