esriRasterStretch_PercentMinimumMaximum

APIないのか…

var t = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
IWorkspaceFactory wsf = (IWorkspaceFactory)Activator.CreateInstance(t);
var ws = (IRasterWorkspace2)wsf.OpenFromFile(extractDir, 0);
Marshal.FinalReleaseComObject(wsf);
var rasterDataset = ws.OpenRasterDataset("raster");

var layer = (IRasterLayer)new RasterLayerClass();
com.ManageLifetime(layer);
layer.CreateFromDataset(rasterDataset);

var rasterStretchColorRampRenderer = (IRasterStretchColorRampRenderer)new RasterStretchColorRampRendererClass();
com.ManageLifetime(rasterStretchColorRampRenderer);

var rasterRenderer = (IRasterRenderer)rasterStretchColorRampRenderer;
var rasterStretch = (IRasterStretch)rasterStretchColorRampRenderer;

//ストレッチタイプの指定
rasterStretch.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_PercentMinimumMaximum;
rasterStretch.StandardDeviationsParam = 2;

var serializer = (IXMLSerializer)new XMLSerializerClass();
com.ManageLifetime(serializer);

var xml = serializer.SaveToString(rasterStretchColorRampRenderer, null, null);

var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
var renderNode = xmlDoc.FirstChild;

foreach (XmlNode node in renderNode.ChildNodes)
{
    if (node.Name.ToLower() == "percentclipmin")
    {
        node.InnerText = 15.ToString();
    }
    else if (node.Name.ToLower() == "percentclipmax")
    {
        node.InnerText = 5.ToString();
    }
}//end loop
//いったん文字化
xml = xmlDoc.OuterXml;

rasterStretchColorRampRenderer =
    (IRasterStretchColorRampRenderer)serializer.LoadFromString(xml, null, null);
                
layer.Renderer = (IRasterRenderer)rasterStretchColorRampRenderer;
((IRasterRendererUpdate)layer.Renderer).Update(layer);
広告
カテゴリー: 開発 | タグ:

Windowsシステムユーザなどの%USERPROFILE%フォルダ

ちょいはまったことがあるのでメモ

アカウント パス
System %windir%\System32\config\systemprofile
System(WOW64) %windir%\SysWOW64\config\systemprofile
LocalService %windir%\ServiceProfiles\LocalService
NetworkService %windir%\ServiceProfiles\NetworkService

 

カテゴリー: 運用, 開発環境 | タグ:

whois

要求応答返すIPがどこのサービス使ってるかは割り当て情報見れば概ねわかる。
名称解決しているIPからOrgTechNameとかOrganization見るだけ。

Organization: Amazon Technologies Inc. (AT-88-Z)
OrgTechName: Amazon EC2 Network Operations

とか見える。ArcGIS Onlineとかは組織単位に恐らく異なるIP=ホスト割り付けでEC2
とかそういった中身を推測できる。
ちなみに自動附番整数のOBJECTID引きずってるHosted Serviceはどうスケーリングしたとしても (分散条件がレプリケーションだからそもそもスケーリングも難しいが) Insertはキャップがかなり低いはず。
(Portalと同様なPostgreSQLに格納されているのでは?)

Elasticsearch 格納ならばGUIDのような附番だがいじらせる気はない模様
https://community.esri.com/thread/174206

カテゴリー: 設計, 動向 | タグ:

ST_Transformどうなの?

これからの流れ
https://jpusergis.wordpress.com/2017/11/15/donotusentv2injp/

当然TKY2JGDとは違います。
コード書けない人はどーしてんのか。

POSTGIS=2.3.2
GEOS=3.6.1-CAPI-1.10.1
PROJ=Rel. 4.9.1
GDAL=GDAL 2.1.3
LIBXML=2.7.8
LIBJSON=0.12
RASTER

緯度 35.003215692
経度 134.997229989
X座標 -110380.5661 m
Y座標 60597.9468 m

TOKYO 4301

SELECT
 ST_AsText(
  ST_Transform(
   ST_GeomFromText('POINT(135 35)', 4301),
   4612
  )
 );

“POINT(134.997204249013 35.0031971806904)”
X座標 -110382.6352 m
Y座標 60595.6111 m

並べると
X座標 -110380.5661 m
X座標 -110382.6352 m
Y座標 60597.9468 m
Y座標 60595.6111 m

緯度 24.467
経度 122.98
緯度 24.472484139
経度 122.980455228
X座標 -168814.9237 m
Y座標 -103351.4901 m

SELECT
 ST_AsText(
  ST_Transform(
   ST_GeomFromText('POINT(122.98 24.467)', 4301),
   4612
  )
 );

“POINT(122.978487384933 24.4711542616074)”

X座標 -168960.7563 m
Y座標 -103552.0726 m

並べると
X座標 -168814.9237 m
X座標 -168960.7563 m
Y座標 -103351.4901 m
Y座標 -103552.0726 m

まあ補正パラメータはなぁ。。。。

カテゴリー: 開発, 設計 | タグ:

PostgreSQL設定関連

postgresql.conf周り。
バージョンによっては廃止された項目もあるし使い方やHWに応じて最適設定かわるが
見たことないって人は調べて設定してほしい。

shared_buffers メモリ総量の25%/40%
work_mem 16MB~64MBくらい?
maintenance_work_mem 128MB~総量10%くらい?

temp_buffers 6MB~64MBくらい?
wal_buffers 1MBくらい?

effective_cache_size 総量50%くらい?
checkpoint_segments 6~32くらい?
checkpoint_timeout 30min
random_page_costrandom_page_cost 2くらい?

カテゴリー: 開発環境, 設計 | タグ:

WKT AXIS ORDER

WKT空間参照の順列定義は本来この順列に従う必要があるらしいとか。。。
ISO19162 の7.5
When is present in the WKT string the descriptions shall be ordered according to the axis order sequence.
このあたりかな??

GEODCRS["JGD2000",
  DATUM["Japanese Geodetic Datum 2000",
    ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1.0]]],
  CS[ellipsoidal,2],
    AXIS["latitude",north,ORDER[1]],
    AXIS["longitude",east,ORDER[2]],
    ANGLEUNIT["degree",0.01745329252],
  ID["EPSG",4612]]
PROJCRS["JGD2000 / Japan Plane Rectangular CS I",
  BASEGEODCRS["JGD2000",
    DATUM["Japanese Geodetic Datum 2000",
      ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1.0]]]],
  CONVERSION["Japan Plane Rectangular CS zone I",
    METHOD["Transverse Mercator",ID["EPSG",9807]],
    PARAMETER["Latitude of natural origin",33,ANGLEUNIT["degree",0.01745329252]],
    PARAMETER["Longitude of natural origin",129.5,ANGLEUNIT["degree",0.01745329252]],
    PARAMETER["Scale factor at natural origin",0.9999,SCALEUNIT["unity",1.0]],
    PARAMETER["False easting",0,LENGTHUNIT["metre",1.0]],
    PARAMETER["False northing",0,LENGTHUNIT["metre",1.0]]],
  CS[cartesian,2],
    AXIS["northing (X)",north,ORDER[1]],
    AXIS["easting (Y)",east,ORDER[2]],
    LENGTHUNIT["metre",1.0],
  ID["EPSG",2443]]

平面直角座標系 1 系
X座標 1m
Y座標 2m

緯度 33°00′00.03246″
経度 129°30′00.07705″

33.000009016666666666666666666667
129.50002140277777777777777777778

SELECT
 ST_AsText(
  ST_Transform
    (ST_GeomFromText('POINT(129.5000214027777777777777777777 33.00000901666666666666666666666)', 4612),
    2443)
)
;

‘POINT(1.99995816522274 0.999888726019038)’

‘2.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1’

SELECT
  ST_AsText(
   ST_GeographyFromText('SRID=4612;POINT(130 30)')
  );

‘POINT(30 50)’

現状は、こうだがそのうちXY逆転が必要なのかもな。。。めんど。
まあ空間参照テーブルのWKT定義側のORDER指定で望む側に直せば済む気がするがそういう問題でもないのか?。

カテゴリー: 設計, 動向 | タグ:

要素内補間

https://ja.wikipedia.org/wiki/要素内補間
Interpolation
TKY2JGDとか不規則三角網の内点の標高値補完につかう。

全然関係ないけど、ArcGISを”体系的”に学ぶとshapefileの拡張子の組合せが分かるようになるとか。。。
ものすごく局所的だしトレーニング受ける意味ないな

DBF直読みしながらインデックスファイル読んで、形状取得でもしなきゃ使わんし
そもそも色々読み込めるライブラリあるが。。

普通の人は複数ファイルで構成されてる程度の認識で問題ないでしょ。
ファイル仕様は必要な時に必要な仕様が調べられれば問題ないし。

FileGeodatabaseは何故、仕様非公開のフォルダ仕様になったのかな。。
SQLiteなら使い易かったのにな。。まあ1ファイルベースの上限の問題もあろうが。。
API出してくれるだけマシだが、うーむ。

カテゴリー: 雑記, 設計