GeoTIFFを読み込めない
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
0 개 추천
こんにちは。
GeoTIFFを読み込み、地図を表示させたいのですが、エラーになってしまいます。
どうしたらよいでしょうか?
[A,R] = readgeoraster("Dynamic Surface.tif");
mapshow(A,R)

채택된 답변
Kojiro Saito
2021년 9월 30일
0 개 추천
GeoTIFF画像の座標系が地理座標系か投影座標系で使う表示用の関数が変わります。
readgeorasterの第2出力(R)がMapCellsReferenceとかMapPostingsReferenceという投影座標系ではmapshowを使います。
例えばドキュメントの例にあるboston.tifは投影座標系の画像です。
[A,R] = readgeoraster('boston.tif');
whos R
Name Size Bytes Class Attributes
R 1x1 16888 map.rasterref.MapCellsReference
mapshow(A,R)

一方でRが GeographicCellsReferenceやGeographicPostingsReferenceの場合はgeoshowで可視化できます。
[A2,R2] = readgeoraster('n39_w106_3arc_v2.dt1','OutputType','double');
whos R2
Name Size Bytes Class Attributes
R2 1x1 1848 map.rasterref.GeographicPostingsReference
latlim = R2.LatitudeLimits;
lonlim = R2.LongitudeLimits;
figure
usamap(latlim,lonlim)
geoshow(A2,R2,'DisplayType','surface')
demcmap(A2)

mapshowで出ているエラーから推測すると、お使いのデータの座標系(R)がMap**の投影座標系になっていないと思われます。
Geographic**の座標系になっていたら、geoshowをお使いになってはいかがでしょうか。
댓글 수: 11
Yu
2021년 10월 3일
コメントくださりありがとうございます。
実はgeoshowも試したのですが、同じくエラーが出てしまい困っておりました。
出力元のソフトは他のデータも投影座標系でデータを出力しているので、このtiffデータもそうだと思うのですが…。

Kojiro Saito
2021년 10월 5일
座標系は投影座標系になっているのでmapshowで良さそうです。
エラーメッセージからすると、RGB画像なのにM×N×3のサイズになっていないのが原因のようです。
whos A
で画像部分の配列サイズを確認していただけますか?
ファイル名から推測するとこのGeoTIFF画像は地表面モデル(DSM)でしょうか。グレースケールの画像だと色情報が無いのでM×N×3の「×3」の部分が欠けているのかもしれません。
Yu
2021년 10월 5일
添付のように、カラーの海底地形モデルのgeotiffを表示させたいです。
Sizeの最後が4となっているのが原因ということでしょうか。
tiffを出力する際には何も変更ができません。
tiff以外には、xyz、KMLなどのフォーマットで出力も可能ですが、他のフォーマットでも対応可能でしょうか?
どうぞ宜しくお願い致します。



Kojiro Saito
2021년 10월 5일
3次元目のサイズが4ですが、色情報(R、G、Bの輝度値)が3列で、4列目は海底面高さでしょうか。
手元にデータが無いので確認はできませんが、表示するなら
mapshow(A(:,:,1:3), R)
で色情報が表示できると思います。
もし4列目が高さでしたら、
mapshow(A(:,:,4), R)
や
mapshow(A(:,:,4), R, 'DisplayType','surface')
で標高のテキスチャが表示できるかもしれません。
Yu
2021년 10월 5일
mapshow(A(:,:,1:3), R )
で前回添付したものと同じカラー地図が表示できました!
mapshow(A(:,:,4), R)
→これは地形部分が真っ白に、
mapshow(A(:,:,4), R, 'DisplayType','surface')
→こちらはエラーとなりました。
表示したところ、XY座標であったため、緯度・経度(°)に変換したいと思っています。
geotiffからXYZ座標を抽出するにはどうすればよいでしょうか?
このスレッドのままお聞きしてよいかわかりませんが、もしご存知でしたらご教示いただけますと幸いです。
Kojiro Saito
2021년 10월 5일
すると、3次元目のデータの1列から3列がRGBの情報のようですね。
mapshow(A(:,:,4), R)
で白くなってしまったのは、4列目のデータの値が高い値に偏っているためと思われます。
histogram(A(:,:,4))
で散らばりが確認できますが、横軸の右側に偏っていませんでしょうか?
データを正規化して色の散らばりを変えてみると見やすくなるかもしれません。
mapshow(normalize(double(A(:,:,4)), 'range')*256, R)
また、mapshowはXY座標なので、lat、lonで表示するにはprojinvで座標系を変換してgeoshowで表す必要があります。
参考:ドキュメント
[A,R] = readgeoraster("Dynamic Surface.tif");
p = R.ProjectedCRS;
[x,y] = worldGrid(R);
[lat,lon] = projinv(p,x,y);
geoshow(lat,lon, A)
Yu
2021년 10월 8일
返信が遅くなり申し訳ありません。
【1】
histogram(A(:,:,4))
で散らばりが確認できますが、横軸の右側に偏っていませんでしょうか?
データを正規化して色の散らばりを変えてみると見やすくなるかもしれません。
→確認してみると、左右に偏っていました。正規化したものも、地形部分が以前と変わらず真っ白でした。

【2】lat lonへの変換はできたのですが、geoshowでエラーが発生してしまいました。geoshowのドキュメントも読んだのですが、解決方法が分かりませんでした…。
何度も申し訳ございませんが、ご教示いただけますと幸いです。

Kojiro Saito
2021년 10월 10일
@Yu さん
使用しているGeoTIFFデータをシェアいただくのは可能でしょうか?
ドキュメントの例にあるGeoTIFFのサンプルと異なっているようなので、実際にデータを見させてもらったほうがスムーズそうです。
Yu
2021년 10월 11일
ありがとうございます。添付にサンプルデータを添付を致しましたので、お手数ですがご確認のほど宜しくお願いいたします。
Kojiro Saito
2021년 10월 11일
添付ありがとうございます。
A(:, :, 4)は0か255の2値になっていて、ピクセルの輝度値が画像の領域内なら255、領域外なら0になっているだけでしたね。
A(:, :, 1:3)の色情報を緯度、経度にマッピングするには不要の情報でした。
[A, R] = readgeoraster("Sample.tif");
p = R.ProjectedCRS;
[x,y] = worldGrid(R);
[lat,lon] = projinv(p,x,y);
geoshow(lat,lon, A(:,:,1:3))
geoshowの中に緯度経度座標に投影したAの色情報(1:3)だけ入れればできました。

Yu
2021년 10월 12일
なるほど、輝度値というのがあるのですね。勉強になりました。
こちらでも、元のデータで無事緯度経度に変換できました。
何度も丁寧にお答えいただき大変助かりました!ありがとうございました。
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Vector and Raster Map Display에 대해 자세히 알아보기
태그
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)