Map API specification

Overview

 * The Anatomography map API returns an image either in still PNG or animated GIF files in response to an HTTP request via a URL.
 * In addition it provides functions to make the map image interactive on the web application.
 * For each request, you can specify the model data, picturing condition, or point on a image to be mapped on the model.
 * The map images can be embedded within and tag's src attribute in a HTML file for browsers, or used as a hyperlink to the image in other application files.

URL parameters
http://lifesciencedb.jp/bp3d/API/methods?input_data_string
 * Anatomography URL must be of the folwoing form:

Methods

 * API provides five different functions (methods) specified by their paths.
 * Output of the functions are images of the maps, or element in the map data.

methods for Image generation (returns image)

 * 1) API/image:       REQUEST; map configuration,// REPLY; image of map
 * 2) API/animation:  REQUEST; map configuration,// REPLY; gif animation map

methods for modify maps on the browser ( Return map data element )

 * 1) API/map:         REQUEST; map configuration and X,Y,Z coordinates on the surface of the model // REPLY; XY coordinates on the image. // This function is used to draw numbers at the foot of pin markers and lines linking pin markers and annotations
 * 2) API/focus:       REQUEST; map configuration //  Returnz Zoon value to focus on the parts in the map configuration.
 * 3) API/pick:         REQUEST;  map configuration and X,Y coordinates on the map image, // Return; X,Y,Z coordinates and the surface vector of the polygon. used to select segment by mouse action and compute pin-marker coordinates (rotate model by mouse-action on the image is done in javascript in client side)

input data string

 * input data for APi functions have to be in a form of associative arrays of parameter type and parameter value in syntax of URL query string (& = ) or in JSON (Javascript object notation).
 * Input data include map configuration to make image of the map and coordinates of the mouse-click on the image that make the image clickable.
 * Input data consists of 10 categories of about one hundred parameter types.
 * Some categories are common to all method but others are specific to some methods as shown below.

Types, meanings, and allowed values for input data parameters

 * The following is a list of parameters accepted by map API to define and modify custom maps.
 * The default values as shown will complement the parameter value when URL do not include them.

Common parameters

Window parameters

Camera parameters

Object rotation parameters

Part parameters

Legend parameters

Pin parameters

Pick parameters

Light parameters

Animation parameters

image
{  "data":"image/png;base64,base64 encoded data" }
 * When map URL is requested by "GET" image data in PNG format will returned.
 * When requested by "POST", to browser older than IE8 will receive the same as GET.
 * Otherwise reply is in JSON formatted data as below

animation

 * Reply animated gif file

focus

 * Returns following data in JSON

{ Camera:{ CameraX:nnn, CameraY:nnn, CameraZ:nnn, TargetX:nnn, TargetY:nnn, TargetZ:nnn, CameraUpVectorX:nnn, CameraUpVectorY:nnn, CameraUpVectorZ:nnn, Zoom:nnn } }

pick
{ Pin:[ {   PinX:nnn, PinY:nnn, PinZ:nnn, PinArrowVectorX:nnn, PinArrowVectorY:nnn, PinArrowVectorZ:nnn, PinUpVectorX:nnn, PinUpVectorY:nnn, PinUpVectorZ:nnn, PinPartID:"xxx", PinCoordinateSystemName:"xxx" },  ...   {    Repeat the above for all pins } } }
 * Returns following data in JSON

map
{ Map:[ {   PinX:nnn, PinY:nnn, PinZ:nnn, PinScreenX:nnn, PinScreenY:nnn },  ...   {    Repeat as above for all pins } } }
 * Returns data in JSON

Japanese version
一般的な設定項目

"Common": { "Model":"bp3d",			モデル（文字列） "Version":"4.0",			バージョン（文字列／"2.0"、"3.0"、"4.0". 未指定の場合最新バージョンとなります） "AnatomogramVersion":"20110318",	アナトモグラムのバージョン（文字列） "ScalarMaximum":65535,			Scalar最大値（整数） "ScalarMinimum":-65535,		Scalar最小値（整数） "ColorbarFlag":false,			カラーバーの描画フラグ（Boolean） "ScalarColorFlag":false,		Valueを利用した臓器描画フラグ（Boolean） "TreeName":"isa",			利用するTree名（文字列／"isa"、"partof"のいずれかを指定します） "DateTime":"",				描画時刻（文字列、yyyymmddhhmmss） "CoordinateSystemName":"bp3d",		描画座標系（文字列） "CopyrightType":"",			コピーライト画像サイズ（文字列／未指定、large、medium、small） "PinDescriptionDrawFlag":false,	true：description表示、false：description非表示（Boolean） "PinIndicationLineDrawFlag":0		ピンからPin Descriptionへの線描画指定（整数／0:描画なし、1:ピン先端から描画、2:ピン終端から描画） } ウィンドウ項目

ウィンドウ（描画画像全体）に関する項目

"Window": { "ImageWidth":500,			画像幅px数（整数） "ImageHeight":500,			画像高さpx数（正数） "BackgroundColor":"FFFFFF",		背景色RGB（文字列、16進数6桁） "BackgroundOpacity":100,		背景の不透明度（整数、0～100） "GridFlag":false,			Gridの描画有無（Boolean） "GridTickInterval":100,		Gridの描画単位（整数、mm指定） "GridColor":"FFFFFF"			Gridの描画色RGB（文字列、16進数6桁） } カメラ項目

カメラ（視点）に関する項目

"Camera": { "CameraMode":"front",			カメラ位置のモード（文字列、camera、front、back、left、right、top、bottom） "CameraX":0,				カメラのX座標（Double） "CameraY":0,				カメラのY座標（Double） "CameraZ":0,				カメラのZ座標（Double） "TargetX":0,				中心点のX座標（Double） "TargetY":0,				中心点のY座標（Double） "TargetZ":0,				中心点のZ座標（Double） "CameraUpVectorX":0,			カメラの上方ベクトルのX要素（Double） "CameraUpVectorY":0,			カメラの上方ベクトルのY要素（Double） "CameraUpVectorZ":0,			カメラの上方ベクトルのZ要素（Double） "Zoom":0,				ズーム値（Double、0～19.8） "AddLatitudeDegree":0,			緯度方向への追加回転角度（Double、0～360度） "AddLongitudeDegree":0			経度方向への追加回転角度（Double、0～360度） } オブジェクトの回転項目

オブジェクト（パーツ群）の回転に関する項目

"ObjectRotate": { "RotateDegree":0,			オブジェクトの回転角度（Double、0～360度） "RotateCenterX":0,			オブジェクトの回転中心X座標（Double） "RotateCenterY":0,			オブジェクトの回転中心X座標（Double） "RotateCenterZ":0,			オブジェクトの回転中心X座標（Double） "RotateAxisVectorX":0,			オブジェクトの回転軸ベクトルX要素（Double） "RotateAxisVectorY":0,			オブジェクトの回転軸ベクトルY要素（Double） "RotateAxisVectorZ":0			オブジェクトの回転軸ベクトルZ要素（Double） } パーツ項目

パーツ（臓器）に関する項目. 複数が前提のため、要素が1つの場合でも配列として記載する必要があります.

"Part": [ { "PartID":"",				臓器ID（文字列、名称より優先されます） "PartName":"",			臓器名（文字列） "PartColor":"FFFFFF",			臓器色RGB（文字列、16進数6桁） "PartScalar":0.0,			臓器スカラー値（Double） "ScalarColorFlag":false,		臓器をスカラー値で描画するフラグ（Boolean） "PartOpacity":1,			臓器不透明度（Double、0～1） "PartRepresentation":"surface",	臓器描画方法（文字列、surface、wireframe、point） "UseForBoundingBoxFlag":true,		臓器をBoundingBoxに含めるか否かのフラグ（Boolean、Focus時にはBoudingBoxに含まれる臓器群が収まるように拡大率が返されます） "PartDeleteFlag":false		臓器の削除フラグ（Boolean） } ] Legend項目

描画画像のLegendに関する項目

"Legend": { "DrawLegendFlag":false,		Legendの描画有無フラグ（Boolean） "LegendPosition":"UL",			Legendの描画位置（文字列、ULのみ） "LegendColor":"FFFFFF",		Legendの描画色RGB（文字列、16進数6桁） "LegendTitle":"",			Legendのタイトル（文字列） "Legend":"",				Legend（文字列） "LegendAuthor":""			Legend Author（文字列） } Pin項目

Pinに関する項目. 複数が前提のため、要素が1つの場合であっても配列として記載する必要があります.

"Pin": [ { "PinID":"",				PinID（文字列） "PinX":0,				Pinの3次元空間上X座標（Double） "PinY":0,				Pinの3次元空間上Y座標（Double） "PinZ":0,				Pinの3次元空間上Z座標（Double） "PinArrowVectorX":0,			PinベクトルのX要素（Double） "PinArrowVectorY":0,			PinベクトルのY要素（Double） "PinArrowVectorZ":0,			PinベクトルのZ要素（Double） "PinUpVectorX":0,			Pinの上方ベクトルのX要素（Double） "PinUpVectorY":0,			Pinの上方ベクトルのY要素（Double） "PinUpVectorZ":0,			Pinの上方ベクトルのZ要素（Double） "PinScreenX":0,			Pinの画像上のX座標（Double） "PinScreenY":0,			Pinの画像上のY座標（Double） "PinDescriptionDrawFlag":false,	PinのDescription描画フラグ（Boolean） "PinDescriptionColor":"FFFFFF",	PinのDescription描画色RGB（文字列、16進数6桁） "PinColor":"FFFFFF",			Pinの描画色RGB（文字列、16進数6桁） "PinShape":"",			Pin形状（文字列、16進数6桁） "PinSize":10.0,			Pinサイズ（Double） "PinCoordinateSystemName":"bp3d",	Pin作成時の座標系（文字列） "PinPartID":"",			Pinが打たれているパーツのID（文字列） "PinPartName":"",			Pinが打たれているパーツの名称（文字列） "PinDescription":""			PinのDescription（文字列） } ] Pick項目

Pickに関する項目

"Pick": { "MaxNumberOfPicks":20,			ピックする最大数（整数） "ScreenPosX":0,			画像上のピック座標X（整数） "ScreenPosY":0				画像上のピック座標Y（整数） } Light項目

光源に関する項目

"Light": { "LightPosX":0,				光源位置座標X（Double） "LightPosY":0,				光源位置座標Y（Double） "LightPosZ":0,				光源位置座標Z（Double） "LightAddDistance":0,			光源位置が動的の場合、光源位置のターゲットとの距離を指定ポイント分移動します. （Double） "LightAddLatitude":0,			光源位置が動的の場合、光源位置を緯度方向に指定度数移動します. （Double） "LightAddLongitude":0,			光源位置が動的の場合、光源位置を経度方向に指定度数移動します. （Double） "LightIsAuto":true,			trueの場合光源位置が動的に変化（カメラと同一位置）します. （Boolean） "LightIsParallel":true,		true：並行光源、false：点光源になります. （Boolean） "LightIsSpec":false			true：反射効果有り、false：反射効果無し、になります. （Boolean） } Animation項目

アニメーションGIFに関する項目

"Animation": { "Mode":"camera",			回転モードを指定します. （文字列、camera：中心点を中心に緯度または経度方向にカメラを回します. object：回転中心を通り軸ベクトルを回転軸としてオブジェクトを回します. ） "IsLatitude":false,			カメラ回転モードにおける回転方向を指定します. （Boolean、true：緯度方向の回転、false：経度方向の回転） "CenterX":0,				オブジェクト回転モードの回転中心X座標. （Double） "CenterY":0,				オブジェクト回転モードの回転中心Y座標. （Double） "CenterZ":0,				オブジェクト回転モードの回転中心Z座標. （Double） "AxisVectorX":0,			オブジェクト回転モードの回転軸ベクトルX要素. （Double） "AxisVectorY":0,			オブジェクト回転モードの回転軸ベクトルY要素. （Double） "AxisVectorZ":0,			オブジェクト回転モードの回転軸ベクトルZ要素. （Double） "DivideNumber":60,			1回転の分割フレーム数. （整数） "DelayTime":10,			1フレームの表示時間ミリ秒. （整数） "ExpNumOfColors":8,			カラーマップのべき乗数. （整数、1：2色～8：256色） "QuantizeMode":1			gifカラーの量子化モード（0：ノーマル、1：トータル） } レスポンス

レスポンス内容（JSON）

各メソッドの返すレスポンスは下記のようになっています.

image

GETリクエストの場合 画像データ（image/png）を返します.

POSTリクエストの場合 IE8以前：画像データ（image/png）を返します. 上記以外：下記形式のJSONデータを返します. {  "data":"image/png;base64,base64エンコードデータ" } animation

画像データ（image/gif）を返します. focus

下記形式のJSONオブジェクトを返します. { Camera:{ CameraX:nnn, CameraY:nnn, CameraZ:nnn, TargetX:nnn, TargetY:nnn, TargetZ:nnn, CameraUpVectorX:nnn, CameraUpVectorY:nnn, CameraUpVectorZ:nnn, Zoom:nnn } } pick

下記形式のJSONオブジェクトを返します. { Pin:[ {   PinX:nnn, PinY:nnn, PinZ:nnn, PinArrowVectorX:nnn, PinArrowVectorY:nnn, PinArrowVectorZ:nnn, PinUpVectorX:nnn, PinUpVectorY:nnn, PinUpVectorZ:nnn, PinPartID:"xxx", PinCoordinateSystemName:"xxx" },  ・・・   {    同上形式のPin情報 } } } map

下記形式のJSONオブジェクトを返します. { Map:[ {   PinX:nnn, PinY:nnn, PinZ:nnn, PinScreenX:nnn, PinScreenY:nnn },  ・・・   {    同上形式のPin情報 } } }