SQLServer各テーブルの容量

久々にSQL Server使ったのでメモ

DECLARE @table TABLE( 
		[TableName] SYSNAME, 
		[rows] BIGINT,
		[reserved] VARCHAR(25),
		[data] VARCHAR(25),
		[index_size] VARCHAR(25),
		[unused] VARCHAR(25)
		 )
INSERT INTO @table
EXEC sp_MSforeachtable @command1 = "sp_spaceused '?'"

--SELECT * FROM @table
SELECT
  TableName,
  rows,
  CONVERT( bigint, REPLACE(reserved, 'KB', '')) / 1024 as reserved_mb,
  CONVERT( bigint, REPLACE(data, 'KB', '')) /1024 as data_mb,
  CONVERT( bigint, REPLACE(index_size, 'KB', '')) / 1024 as index_size_mb,
  CONVERT( bigint, REPLACE(unused, 'KB', '')) / 1024 as unused_mb
FROM
 @table
ORDER BY
 reserved_mb DESC

GO
カテゴリー: 運用, 開発 | タグ: | SQLServer各テーブルの容量 はコメントを受け付けていません

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);
カテゴリー: 開発 | タグ: | esriRasterStretch_PercentMinimumMaximum はコメントを受け付けていません

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

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

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

 

カテゴリー: 運用, 開発環境 | タグ: | Windowsシステムユーザなどの%USERPROFILE%フォルダ はコメントを受け付けていません

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

カテゴリー: 設計, 動向 | タグ: | whois はコメントを受け付けていません

ST_Transformどうなの?

これからの流れ

NTv2で変換したくない

当然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

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

カテゴリー: 開発, 設計 | タグ: | ST_Transformどうなの? はコメントを受け付けていません

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くらい?

カテゴリー: 開発環境, 設計 | タグ: | PostgreSQL設定関連 はコメントを受け付けていません

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指定で望む側に直せば済む気がするがそういう問題でもないのか?。

カテゴリー: 設計, 動向 | タグ: | WKT AXIS ORDER はコメントを受け付けていません

要素内補間

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

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

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

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

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

カテゴリー: 雑記, 設計 | 要素内補間 はコメントを受け付けていません

ArcGIS付属のspatialite

C:\Program Files (x86)\Arcgis\Desktop10.4\bin\spatialite400x.dllみたいにbinにSpatialiteのDLLが入っているので普通に使える。
ただGEOS依存とか一部のFunctionは使えないかもsys.path.append(installDir)でパスを通す。
※GEOSぽいDLLとかもあるがどこまでつかえるか見てない

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import arcpy
import sqlite3
import os
import sys

if __name__ == "__main__":

  outWsName = r'C:/temp/example.sqlite'
  cpFCName = r'C:/temp/JPN.gdb/japan_ver81_point'
  outName = r'japan_ver81_point'
  
  arcpy.CreateSQLiteDatabase_management(outWsName, 'SPATIALITE')

  arcpy.env.workspace = outWsName

  arcpy.CopyFeatures_management(cpFCName, outName)
  
  #print arcpy.GetInstallInfo()["InstallDir"];
  installDir = os.path.join(arcpy.GetInstallInfo()["InstallDir"], "bin")
  #sys.path.append("C:\Program Files (x86)\Arcgis\Desktop10.4\bin")
  sys.path.append(installDir)
  
  conn = sqlite3.connect(outWsName)
  conn.enable_load_extension(True)

  sql = "SELECT load_extension('spatialite400x');"
  print dllPath
  conn.execute(sql)

  for row in conn.execute("SELECT ST_AsText(shape) FROM " + outName + ";"):
    print(row)
カテゴリー: 開発 | タグ: , , | ArcGIS付属のspatialite はコメントを受け付けていません

Ram.Common.ArcObjects

https://www.nuget.org/packages/Ram.Common.ArcObjects/
Network Feature関連の便利クラスっぽい。


予定ではそろそろいないかと思ったけどまだ居るのねArcObjects。
新規のライセンス売れもしなくなる開発フレームワークで新規開発とかないと思うけど。。

カテゴリー: 開発, 設計 | タグ: | Ram.Common.ArcObjects はコメントを受け付けていません