Geography データタイプを使用して地理的なエンティティを形式的に表すことができます。これは、データベースごとに異なり、各データベース管理システムでサポートされている特定のデータタイプを使用して地理情報が保存されます。
Geography データタイプには、GeoPoint タイプ、GeoLine タイプ、GeoPolygon タイプという特殊なバリアントがあります。これらは、Geography データタイプから派生したものです。
- 近接ポイント
たとえば、観光名所を保存する必要があるとすると、次のような Transaction オブジェクトを定義します:
Place
{
PlaceId*
PlaceName --> Character data type
PlaceGeo --> Geography data type
}
その後、あるポイントと距離 (メートル単位) を渡すと、そのポイントを中心に指定した半径内にあるすべての観光名所を表示する Web Panel オブジェクトを定義します。
&MyPoint --> Geography data type
&Distance --> Numeric data type
Event Load
For each Place
where PlaceGeo.Distance(&MyPoint) < &Distance
&PlaceName=PlaceName
load
endfor
EndEvent
|
|
多角形内のポイント
次の Transaction オブジェクトがあるとします:
Neighborhood
{
NeighborhoodId*
NeighborhoodName --> Character data type
NeighborhoodPlace --> Geography data type
}
特定の観光名所を渡すと (エンドユーザーがマップ上でポイントを指示)、その名所がある場所の近くまたはゾーンを示す Web Panel オブジェクトを定義するとします:
&MyPoint --> Geography data type
&NeighborhoodPlace --> Geography data type
Event 'Get_Neighborhood'
For each Neighborhood
Where NeighborhoodPlace.Intersect(&Mypoint)
&NeighborhoodPlace = NeighborhoodPlace
endfor
Endevent
|
|
次の
Transaction オブジェクトがあるとします:
Place
{
PlaceId*
PlaceName --> Character data type
PlaceGeo --> Geography data type
}
トランザクションを実行し、レイアウト上に存在する PlaceGeo 項目属性に関連付けられたマップをダブルクリックすることができます。保存すると、場所レコードの Geography データが保存されます。
また、
FromWkt メソッドと
FromGeoJson メソッドを使用して、Geography データタイプに基づく項目属性にデータをロードできます。
FromWkt
メソッドは、 "POINT(経度 緯度)" 構文で、経度座標と緯度座標を (この順序で) 受け取ります。
FromGeoJson メソッドは、
GeoJSON 形式のファイルを受け取ります。
FromString メソッドも使用できますが、使用すべきメソッドは
FromWkt です。
例
New
PlaceId = 1
PlaceName = "Palacio Legislativo"
PlaceGeo = GeoPoint.New(-34.8910275746741, -56.18720064473088)
endNew
New
PlaceId = 2
PlaceName = "Golf Club"
PlaceGeo.FromWkt("POINT(-56.163740158081055 -34.92478600243492)")
endNew
New
PlaceId = 3
PlaceName = "Ramirez Beach"
PlaceGeo.FromGeoJson('{"type":"Point","coordinates": [ -56.1701774597168,-34.91676309400329 ] }')
endnew
New PlaceId = 4
PlaceName = "Constituyente, Avenue"
PlaceGeo.FromGeoJson('{ "type": "LineString", "coordinates": [ [ -56.18528366088867, -34.90571271703311 ] , [ -56.17850303649902, -34.90641660705113 ] , [ -56.15318298339844, -34.9140182347531 ] , [ -56.14863395690918, -34.91521472314688 ] ] }')
endnew
new
PlaceId = 5
PlaceName = "Punta Carretas, Neighborhood"
&geojsonbarrio = '{ "type": "Polygon", "coordinates": [ [ [ -56.148808,-34.918453 ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.154835,-34.917061' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.156059,-34.916466' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.156250,-34.914318' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.162754,-34.914791' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.162003,-34.921761' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.165714,-34.919930' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.165737,-34.919930' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.168247,-34.919525' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.169598,-34.918205' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.171421,-34.919209' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.172668,-34.919685' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.172558,-34.920406' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.171207,-34.921566' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.171852,-34.924698' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.171249,-34.925278' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.169662,-34.925438' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.165329,-34.927372' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.161766,-34.929379' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.159920,-34.930645' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.157967,-34.927776' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.156445,-34.927177' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.153141,-34.925507' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.151508,-34.924644' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.151489,-34.923008' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.149151,-34.921497' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.148506,-34.921585' + ' ] , [ '
&geojsonbarrio = &geojsonbarrio + '-56.148808,-34.918453' + ' ] ] ] }'
PlaceGeo.FromGeoJson(&geojsonbarrio)
endnew
New
PlaceId = 6
PlaceName = "Bulevar Artigas, Boulevard"
PlaceGeo.FromString("LINESTRING(-56.16090774536133 -34.928797162523516, -56.1650276184082 -34.89494244739731)")
endnew
new
PlaceId = 7
PlaceName = "Cerro, Neighborhood"
PlaceGeo.FromString('POLYGON ((-56.248367 -34.873821, -56.266563 -34.876427, -56.263733 -34.890366, -56.268799 -34.893394, -56.26897 -34.900291, -56.264851 -34.902615, -56.253605 -34.895645, -56.247597 -34.895153, -56.246052 -34.889523, -56.248367 -34.873821, -56.248367 -34.873821))')
endnew
Geography データタイプのサンプル
フォームに地理的な変数や項目属性を表示するには、次の 1 つのプロバイダーのみを使用します: GoogleMaps。そのためには、API キーを設定する必要があります。
Android アプリケーションの場合は、
[ Android Maps API Key ] プロパティを設定する必要があります。
Web パネルの場合は、次に示すように、フォーム内のコントロールごとに API キーを設定する必要があります:
JavaScript 用の API キーを取得するには、
こちらをクリックしてください。
正しく動作させるためには、このキーに対して複数の API を有効にする必要があります: 例: Maps JavaScript API、Maps Static API、Geocoding API、Geolocation API の使用が一般的です。
SQL Server: バージョン 2008 以降が必要です。
SQL Server 2014 以降では、SQL Server 2012 Feature Pack を Web サーバーにインストールする必要があります。
MySQL/MariaDB: バージョン 5.7.5 以降が必要です。
現時点ではバージョン 8.0 をサポートしていません。
Oracle: Oracle Locator または Oracle Spatial をインストールする必要があります。Oracle 11.g 以降では、既定で事前にインストールされています。
PostgreSQL: PostgreSQL から拡張 PostGIS をインストールする必要があります。データベースの作成時に、 [ Postgre SQL Extensions ] プロパティに postgis を設定する必要があります (再編成の実行前)。
DBMS: GeneXus 15 の場合、DB2 と Informix ではこの機能はサポートされていません。
以前のバージョンでは、次のような機能を使用して地理情報を表していました:
-
Geolocation ドメイン (非推奨)。
-
Web パネルでの Map ユーザーコントロール (利用可能)
-
パネルで [ Control Type ] プロパティが Maps に設定されたグリッド (利用可能)
-
Geolocation 外部オブジェクト (利用可能)
Geography |
|
|
Srid |
int |
Spatial Reference System Identifier (SRID)。表示された Geographic オブジェクトの参照システムを識別します。
https://en.wikipedia.org/wiki/SRID を参照してください。 |
FeatureType |
char |
表示された Geographic オブジェクトのタイプ名を示す文字列。
POINT、LINE、POLYGON などのタイプがサポートされていますが、将来のリリースではその他のタイプのサポートも追加される予定です。
空の文字列は、null またはサポート対象外のオブジェクトを表します。 |
GeoPoint |
|
|
Srid |
int |
Spatial Reference System Identifier (SRID)。表示された Geographic オブジェクトの参照システムを識別します。https://en.wikipedia.org/wiki/SRID を参照してください。 |
Longitude |
int(12,8) |
ポイントの経度 (水平) 座標の値。 |
Latitude |
int(12,8) |
ポイントの緯度 (垂直) 座標の値。 |
GeoLine |
|
|
Srid |
int |
Spatial Reference System Identifier (SRID)。表示された Geographic オブジェクトの参照システムを識別します。https://en.wikipedia.org/wiki/SRID を参照してください。 |
GeoPolygon |
|
|
Srid |
int |
Spatial Reference System Identifier (SRID)。表示された Geographic オブジェクトの参照システムを識別します。https://en.wikipedia.org/wiki/SRID を参照してください。 |
Geography |
|
|
FromWkt(WKT の文字) |
Geography |
WKT テキスト (https://en.wikipedia.org/wiki/Well-known_text) で表された Geography オブジェクトをロードします。
例: &GeographyVariable.FromWkt("POINT(-56.163740158081055 -34.92478600243492)") |
FromString(文字列) |
Geography |
FromWKT メソッドに似ています。FromWKT メソッドを使用してください。 |
FromGeoJson(文字列) |
Geography |
GeoJSON テキスト (GeoJSON 形式の仕様: http://geojson.org/geojson-spec.html) で表された Geography オブジェクトをロードします。 |
ToGeoJson() |
Char |
オブジェクトを GeoJSON 表現にシリアライズします。 |
ToWkt() |
Char |
オブジェクトを WKT (Well Known Text) 形式にシリアライズします。 |
Distance(Geography オブジェクト) |
Int |
現在のオブジェクトとパラメーターの間の距離 (メートル単位) を計算します (両方の Geography オブジェクトが GeoPoint か、GeoPoint を含む Geography である必要があります)。 |
Intersect(Geography オブジェクト) |
Boolean |
パラメーターで指定した Geographic オブジェクトが交差するか、インスタンスオブジェクトに含まれている場合は True を返します。 |
ToGeoPoint(Geography オブジェクト) |
GeoPoint |
Geography を GeoPoint タイプに変換します (キャスト)。 |
ToGeoLine(Geography オブジェクト) |
GeoLine |
Geography を GeoLine タイプに変換します (キャスト)。 |
ToGeoPolygon(Geography オブジェクト) |
GeoPolygon |
Geography を GeoPolygon タイプに変換します (キャスト)。 |
GeoPoint |
|
|
|
|
Geography のすべてのメソッドが適用されます。 |
FromString(文字列) |
GeoPoint |
FromWKT メソッドに似ています。FromWKT メソッド (入力パラメーターとして Wkt フォーマットを受け取る) の使用に加えて、FromString メソッドを GeoPoint データタイプ (入力パラメーターとして Geolocation ドメインに基づく文字列を受け取ります) に適用することもできます。これは Android のみで使用できます。
例: &GeoPointVariable.FromString("-34.92478600243492, -56.163740158081055") |
ToGeography(GeoPoint オブジェクト) |
Geography |
GeoPoint を Geography タイプに変換します (キャスト)。 |
GeoLine |
|
|
|
|
Geography のすべてのメソッド (Distance を除く) が適用されます。 |
ToGeography(GeoLine オブジェクト) |
Geography |
GeoLine を Geography タイプに変換します (キャスト)。 |
GeoPolygon |
|
|
FromWkt()...Intersect(GeoPolygon) |
|
|
ToGeography(GeoPolygon オブジェクト) |
Geography |
GeoPolygon を Geography タイプに変換します (キャスト)。 |
これらのメソッドには静的バージョンもあります。
注: FromString メソッドと ToString メソッドは、互換性のためだけに Geography データタイプで有効になっています。代わりに FromWkt および ToWkt を使用してください。
DBMS: SQL Server、Oracle、MySQL、SAP HANA、および PostgreSQL。
ジェネレーター: .NET、
.NET Framework、
Java、
Android、
Apple