問題タブ [map-projections]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
d3.js - D3.js 解析エラー - 直交マップ投影の回転
D3でTopoJSONを使用して、世界地図の正射影を作成しました。このコードを呼び出して、データをロードするたびに国を色付けしています。地球は常に回転しています。
私の問題は、回転中にエラーメッセージが表示されることです。
エラー
>> エラー: d="" の解析に問題があります >> d3.v3.min.js:1 で
それぞれについて:
まず、バージョンが違うのでtopojsonスクリプトに依存すると思いました。しかし、そうではありませんでした。
JavaScript コード:
地球/投影のプロパティを初期化します。
json と tsv からデータを読み取り、土地と国を追加します。
地球の回転:
javascript - d3.js : 正射回転の最適化
正射投影を使用してマップを作成しましたが、回転がスムーズではないため (6 ~ 7 FPS 程度)、パフォーマンスを改善しようとしています。
topojsonファイル(world-100m)で構築した世界地図です。country とやり取りして色付けする必要があるため、countries と同じ数の svg:path が存在します。
ロード後、 d3.timer を使用して自動回転機能を起動しました:
なぜ遅いのかを理解するために、Chrome でプロファイル レコードを作成しました。結果は次のとおりです。
Animation Frame Firedが遅い部分のようですが、それが何であるかはよくわかりません。それを開くと、2 つの GC イベント (ガベージ コレクター ?) がありますが、周りには何もありません... この 90 ミリ秒の間に何が起こっているか分かりますか?
パフォーマンスを改善するためのヒントは大歓迎です:-)
よろしくお願いします!
ちなみにこんな感じです。
silverlight - グラフィックを ArcGIS の別の座標系に変換するにはどうすればよいですか?
シェープファイルをアップロードしてマップに表示できる機能を Silverlight ArcGIS アプリケーションに追加しようとしています。シェープファイルをアップロードするたびに、正しく表示されますが、テキサスにあるはずの形状がサハラに描かれているなど、間違った場所に表示されます。
問題は、マップが各シェープファイルとは異なる座標系を使用していることだと確信していますが、シェープファイルの座標を正常に変換できるリソースを見つけることができませんでした。WebMercator.FromGeographicは一部のシェープファイルで機能しますが、他のシェープファイルではアプリケーションがクラッシュします。
GeometryService を使用してみましたが、形状の SpatialReferences を変更しようとしましたが、どちらも目立った効果はありませんでした。
FromGeographic で機能しなかったファイルの PRJ は次のようになります。
PROJCS["ベーシック アルバース WGS84",GEOGCS["D_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["グリニッジ",0.0],UNIT["度",0.0174532923]19943 ,PROJECTION["アルバース"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",45.5],PARAMETER["Standard_Parallel_2" ,29.5],PARAMETER["原点の緯度",23.0],UNIT["米国フィート",0.3048006096012192]]
これを理解するには、どこから始めればよいでしょうか。
編集:
ポリゴン グラフィックを作成するコードは次のとおりです。
GeometryService は次のように使用されます。
r - Rでラスターレイヤーをバッチでトリミングして投影を変更するにはどうすればよいですか
私は分析の準備をするために空間データを扱っていました - 私は全国規模 (米国) で約 39 の他のレイヤーを持っていますが、私の研究地域の望ましい範囲で DEM を持っています。これらの 39 レイヤーすべてを一度に DEM と同じ程度にトリミングする方法はありますか?
また、出力を別の投影法で他のレイヤーと重ねます。出力レイヤーの投影とピクセル サイズを調整することは可能ですか?
データ操作にはできるだけフリーウェアを使用しようとしています...
shapefile - Esri 投影ファイルは何を表していますか?
私はここで自分自身を本当に混乱させることができました。esri シェープファイルに付随する関連する *.prj ファイルの意味を特定しようとしています。これを含む *.prj ファイルがある場合:
ここでは 2 つのことが定義されています。投影座標系と地理座標系。
- これは、シェープファイルの座標が既に計算されていることを意味し、地理座標に戻りたい場合は、上記の投影変数を使用して変換を行う必要がありますか、それとも現在の変換された座標値を示すメタデータ値ですか?
OpenGL を使用してシェープファイルを描画したいので、投影情報に基づいて変換を行う必要がありますか、それともシェープファイルから読み取った座標を使用するだけですか?
php - PHPでWGS84をETRS89 UTMに変換するには?
PHP を使用して、WGS84 地理座標のペアを ETRS89 投影座標 (UTM) に変換する方法を見つける必要があります。
例:
どうすればそれができるか知っている人はいますか?
ありがとうございました!!
c++ - 地理座標系を持つシェープファイルを opengl でレンダリングする
ご存じのとおり、GIS には 2 種類の座標系があります。地理座標系と投影座標系
で
は、次の状況が考慮 されます。
座標系を投影したシェープファイルがあります。つまり、頂点の座標はPCSにあるため、GDAL/OGR ライブラリで頂点を抽出し、OpenGL で正射投影で表示できます。座標はメートル単位で、2D 平面に投影されているので、問題はないと思います。
データソースには地理座標系があり、投影座標系でレンダリングしたいだけなので、PROJ.4 ライブラリで変換を行い、変換された座標を OpenGL でレンダリングする必要があります。繰り返しますが、表示したい座標は2D平面に投影されているため、問題はないと思います。
データソースには地理座標系があり、それらを OpenGL ウィンドウの同じ GCS でレンダリングしたいと考えています。そのため、地理座標系で GDAL/OGR を使用して座標を抽出し、変換せずに OpenGL でレンダリングします。どうすればこれを達成できますか?つまり、ArcGIS が地理座標系でデータをレンダリングするのと同じように、OpenGL ウィンドウで楕円面を設定するにはどうすればよいでしょうか。
map - NYCマップへのd3.jsメルカトル図法
ニューヨーク市の行政区の地図を作成していますが、正しい投影法が得られないようです。得られるのは小さな地図だけです。
この例を再現しようとしましたが、コンソールがエラーでおかしくなっただけでした。方程式に何か問題があったためだと思います。
albers を機能させようとしていたとき、この質問に対する答えを試してみましたが、それでもマップを機能させることができませんでした。
現在、横メルカトル図法を使用しており、以下のコードと、これらのファイルの 1 つを使用して作成した topojson を使用しています。
お願い、半減してください:(
前もって感謝します!
image - 平らな画像を球状メルカトル EPGS:900013 に投影して、openlayers の画像レイヤーで使用する方法
400x400 キロメートルの領域を表すフラットな 400x400 ピクセルの画像があります。この画像を OpenLayers マッピング システムのオーバーレイとして描画する必要があります。OpenStreetMap/Google マップをベース レイヤーとして使用します。イメージ レイヤーを使用してオーバーレイ イメージを描画し、オーバーレイ イメージを特定の緯度/経度ポイントに配置したいと考えています。ベース レイヤーの投影法は EPSG:900913 です。これは実際、OpenStreetMap と Google マップで使用される投影法です。
私が理解していること(間違っている場合は修正してください)は、フラットな「投影されていない」画像を画像レイヤーとして使用することはできませんが、画像を調整するために一種の「再投影」を行う必要があるということですEPSG:900913 である地図の投影法に準拠する必要があります。こことネットを検索すると、これを行うにはGDALというライブラリ/ツールを使用する必要があるようですが、私はこれにまったく慣れていませんが、お願いします:
- 誰かがそれを使用する方法について私に連絡できますか?
- 私が今言ったことは正しく、ここで説明した方法が有効かどうか教えていただけますか?
- gdal を使用して、投影されていないフラットな 400x400 ピクセルの画像を EPSG:900913 で投影された画像に変換し、オーバーレイとして画像レイヤーとして配置するのに適している方法を教えてください。
ありがとう。
ご要望に応じて画像を追加しました。
@capdragon から提供された回答は役に立ち、さらに一歩進めることができました。とにかく、私はまだいくつかの問題を抱えています。これは私がしました:
- gdal_translate を使用して、次のように GCP を画像の四隅と中央に設定しました。
gdal_translate -of "GTIFF" -gcp 0 0 8.6923 45.5427 -gcp 400 0 13.8149 45.5427 -gcp 200 200 11.2536 43.771702 -gcp 0 400 8.8413 41.9460 -gcp 400 400 13.6659 41.9460 quadrprod.png quadrprod_gpc.tif
このようにして quadrprod_gcp.tif 出力を取得します。それで。
- gdalwarp を使用して、上記の点で設定された GCP を適用し、次のように EPSG:4326 である正しい投影を設定します。
gdalwarp -t_srs EPSG:4326 quadrprod_gcp.tif quadrprod_gcp_warped.tif
このようにして、最終的な quadrprod_gcp_warped.tif を取得します。結果の画像は 400x400 ピクセルではなく、458x331 ピクセルになります。次に、gdalinfo を使用してそれを確認すると、次のことがわかりました。
ご覧のとおり、4 つのコーナーと中央の緯度/経度は、-gcp 値を使用して設定した値とは異なります。私の質問:
- gdalinfo によって返される緯度/経度の値が、ステップ 1 で -gpc を使用して設定した値と異なるのはなぜですか?
- それは正常ですか、それとも何か間違ったことをしていますか?
- 次のステップは何ですか?画像を EPSG:4326 から EPSG:900913 に再度変換する必要がありますか?
- 画像を openlayers にオーバーレイとして配置するとき、境界オブジェクトを作成するとき、-gcp で使用した値または gdalinfo で表示される最終値を南西および北東の角として使用する必要がありますか?