Как установить гео-тэг GeogPrimeMeridianGeoKey

TigerPVR
Интересующийся
Сообщения: 19
Зарегистрирован: 30 янв 2011, 15:08
Репутация: 0

Re: Как установить гео-тэг GeogPrimeMeridianGeoKey

Сообщение TigerPVR » 19 июн 2012, 11:22

Как сделать, чтобы вместо User-Defined в этих тэгах:

Код: Выделить всё

ProjectedCSTypeGeoKey (Short,1): User-Defined
ProjectionGeoKey (Short,1): User-Defined
Стояли нормальные значения, например:

Код: Выделить всё

ProjectedCSTypeGeoKey (Short,1): PCS_WGS84_UTM_zone_30N
ProjectionGeoKey (Short,1): Proj_UTM_zone_30N
?

Мой код сейчас:

Код: Выделить всё

using (SpatialReference oSrs = new SpatialReference(null))
{
  oSrs.SetProjCS("WGS_1984 / UTM zone 36N");
  oSrs.SetWellKnownGeogCS("WGS84");
  oSrs.SetUTM(36, 1);  
  string wkt;
  oSrs.ExportToWkt(out wkt);
  ds.SetProjection(wkt);      // Dataset
}
И как сделать, чтобы в отчете listgeo были такие вещи:

Код: Выделить всё

PCS = 32630 (name unknown)
Projection = 16030 ()
Последний раз редактировалось TigerPVR 19 июн 2012, 12:26, всего редактировалось 1 раз.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как установить гео-тэг GeogPrimeMeridianGeoKey

Сообщение Ariki » 19 июн 2012, 12:20

Не знаю. У меня код на Python

Код: Выделить всё

srs = osr.SpatialReference()
srs.SetUTM(36, 1)
srs.SetWellKnownGeogCS('WGS84')
dst_ds.SetProjection(srs.ExportToWkt())
устанавливает все так, как вам нужно.
А какая версия GDAL? Свежее, чем 1.6?
Можно еще так:

Код: Выделить всё

ds.SetProjection("+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs ");

TigerPVR
Интересующийся
Сообщения: 19
Зарегистрирован: 30 янв 2011, 15:08
Репутация: 0

Re: Как установить гео-тэг GeogPrimeMeridianGeoKey

Сообщение TigerPVR » 19 июн 2012, 14:17

Я понял, что ГЕО-теги становятся User-Defined после того, как я искусственно устанавливаю параметр false_easting:

Код: Выделить всё

oSrs.SetProjParm("false_easting", 500000);
Из-за этого, с одной стороны, мне удается добиться того, что хотелось - получить большое количество установленных ГЕО-тегов:

Код: Выделить всё

   Keyed_Information:
      GTModelTypeGeoKey (Short,1): ModelTypeProjected
      GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
      GTCitationGeoKey (Ascii,24): "WGS_1984 / UTM zone 36N"
      GeographicTypeGeoKey (Short,1): GCS_WGS_84
      GeogCitationGeoKey (Ascii,7): "WGS 84"
      GeogAngularUnitsGeoKey (Short,1): Angular_Degree
      GeogSemiMajorAxisGeoKey (Double,1): 6378137          
      GeogInvFlatteningGeoKey (Double,1): 298.257224       
      ProjectedCSTypeGeoKey (Short,1): User-Defined
      ProjectionGeoKey (Short,1): User-Defined
      ProjCoordTransGeoKey (Short,1): CT_TransverseMercator
      ProjLinearUnitsGeoKey (Short,1): Linear_Meter
      ProjNatOriginLongGeoKey (Double,1): 33               
      ProjNatOriginLatGeoKey (Double,1): 0                
      ProjFalseEastingGeoKey (Double,1): 6500000          
      ProjFalseNorthingGeoKey (Double,1): 0                
      ProjScaleAtNatOriginGeoKey (Double,1): 0.9996           
      End_Of_Keys.
   End_Of_Geotiff.
Но с другой стороны, видимо, что-то нарушается.
Вопрос, как установить большое количество ГЕО-тегов, чтоб при этом ничего не нарушилось. Например, чтобы было так:

Код: Выделить всё

Geotiff_Information:
   Version: 1
   Key_Revision: 1.0
   Tagged_Information:
      ModelTiepointTag (2,3):
         0.5              0.5              0                
         489799.5         4802716.5        0                
      ModelPixelScaleTag (1,3):
         0.6              0.6              0                
      End_Of_Tags.
   Keyed_Information:
      GTModelTypeGeoKey (Short,1): ModelTypeProjected
      GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
      GTCitationGeoKey (Ascii,24): "Projected Coordinates |"
      GeographicTypeGeoKey (Short,1): GCS_WGS_84
      GeogCitationGeoKey (Ascii,6): "WGS84"
      GeogPrimeMeridianGeoKey (Short,1): PM_Greenwich
      GeogLinearUnitsGeoKey (Short,1): Linear_Meter
      GeogAngularUnitsGeoKey (Short,1): Angular_Degree
      GeogEllipsoidGeoKey (Short,1): Ellipse_WGS_84
      GeogSemiMajorAxisGeoKey (Double,1): 6378137          
      GeogSemiMinorAxisGeoKey (Double,1): 6356752.31       
      ProjectedCSTypeGeoKey (Short,1): PCS_WGS84_UTM_zone_30N
      PCSCitationGeoKey (Ascii,12): "UTM / WGS84"
      ProjectionGeoKey (Short,1): Proj_UTM_zone_30N
      ProjLinearUnitsGeoKey (Short,1): Linear_Meter
      End_Of_Keys.
   End_Of_Geotiff.

PCS = 32630 (name unknown)
Projection = 16030 ()
Projection Method: CT_TransverseMercator
   ProjNatOriginLatGeoKey: 0.000000 (  0d 0' 0.00"N)
   ProjNatOriginLongGeoKey: -3.000000 (  3d 0' 0.00"W)
   ProjScaleAtNatOriginGeoKey: 0.999600
   ProjFalseEastingGeoKey: 500000.000000 m
   ProjFalseNorthingGeoKey: 0.000000 m
GCS: 4326/WGS 84
Datum: 6326/World Geodetic System 1984
Ellipsoid: 7030/WGS 84 (6378137.00,6356752.31)
Prime Meridian: 8901/Greenwich (0.000000/  0d 0' 0.00"E)
Projection Linear Units: 9001/metre (1.000000m)

Corner Coordinates:
Upper Left    (  489799.200, 4802716.800)
Lower Left    (  489799.200, 4796419.200)
Upper Right   (  493291.200, 4802716.800)
Lower Right   (  493291.200, 4796419.200)
Center        (  491545.200, 4799568.000)

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как установить гео-тэг GeogPrimeMeridianGeoKey

Сообщение Ariki » 19 июн 2012, 14:38

Если самоцель - установить как можно больше, то лучше использовать libgeotiff напрямую.
geotiff.h File Reference

TigerPVR
Интересующийся
Сообщения: 19
Зарегистрирован: 30 янв 2011, 15:08
Репутация: 0

Re: Как установить гео-тэг GeogPrimeMeridianGeoKey

Сообщение TigerPVR » 19 июн 2012, 14:49

Ariki писал(а):Если самоцель - установить как можно больше, то лучше использовать libgeotiff напрямую.
geotiff.h File Reference
Спасибо большое. Нет ли у кого-нибудь обертки (wrapper) данной библиотеки для C# .net, или готовых вызовов P/Invoke?

Ответить

Вернуться в «GDAL/OGR»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 26 гостей