1. <small id='lrtdK'></small><noframes id='lrtdK'>

      2. <legend id='lrtdK'><style id='lrtdK'><dir id='lrtdK'><q id='lrtdK'></q></dir></style></legend>
          <bdo id='lrtdK'></bdo><ul id='lrtdK'></ul>

        <i id='lrtdK'><tr id='lrtdK'><dt id='lrtdK'><q id='lrtdK'><span id='lrtdK'><b id='lrtdK'><form id='lrtdK'><ins id='lrtdK'></ins><ul id='lrtdK'></ul><sub id='lrtdK'></sub></form><legend id='lrtdK'></legend><bdo id='lrtdK'><pre id='lrtdK'><center id='lrtdK'></center></pre></bdo></b><th id='lrtdK'></th></span></q></dt></tr></i><div id='lrtdK'><tfoot id='lrtdK'></tfoot><dl id='lrtdK'><fieldset id='lrtdK'></fieldset></dl></div>
        <tfoot id='lrtdK'></tfoot>
      3. 使用Python和GDAL给图片加坐标系的实现思路(坐标投影转换)

        使用Python和GDAL给图片加坐标系可以通过以下步骤完成:
          <tbody id='C1clp'></tbody>

            <small id='C1clp'></small><noframes id='C1clp'>

            • <legend id='C1clp'><style id='C1clp'><dir id='C1clp'><q id='C1clp'></q></dir></style></legend>
              <i id='C1clp'><tr id='C1clp'><dt id='C1clp'><q id='C1clp'><span id='C1clp'><b id='C1clp'><form id='C1clp'><ins id='C1clp'></ins><ul id='C1clp'></ul><sub id='C1clp'></sub></form><legend id='C1clp'></legend><bdo id='C1clp'><pre id='C1clp'><center id='C1clp'></center></pre></bdo></b><th id='C1clp'></th></span></q></dt></tr></i><div id='C1clp'><tfoot id='C1clp'></tfoot><dl id='C1clp'><fieldset id='C1clp'></fieldset></dl></div>

                  <bdo id='C1clp'></bdo><ul id='C1clp'></ul>
                  <tfoot id='C1clp'></tfoot>

                  使用Python和GDAL给图片加坐标系可以通过以下步骤完成:

                  1. 安装GDAL:可以通过pip安装,命令为:pip install gdal。安装完毕后,在Python代码中用import gdal语句引入模块。

                  2. 读取图片:使用gdal.Open()函数打开需要添加坐标系的图片。如下所示:

                  ```
                  from osgeo import gdal

                  filename = 'test.tif'
                  ds = gdal.Open(filename, gdal.GA_Update) # 打开文件,可读可写模式
                  ```

                  此处使用了GDAL提供的Open()函数打开了一个名为test.tif的图片,并使用了GA_Update参数,表示可以进行读取和写入操作。

                  1. 添加坐标系:使用ds.SetGeoTransform()函数设置图片的投影信息。投影信息包括左上角的x坐标、每个像素的宽度(x分辨率)、旋转角度、左上角的y坐标、旋转角度、每个像素的高度(y分辨率)。示例如下:

                  geo_transform = (xmin, xres, x_rot, ymax, y_rot, yres)
                  ds.SetGeoTransform(geo_transform)

                  其中,xmin为图片左上角的x坐标,xres表示每个像素的宽度,ymax为图片左上角的y坐标,yres表示每个像素的高度,x_roty_rot为旋转角度。

                  1. 设置投影信息:通过ds.SetProjection()函数设置图片的投影信息。投影信息使用字符串格式表示,可以通过GDAL提供的EPSG库调用标准的投影信息。例如,设置图片的投影为WGS 84 / UTM zone 48N,则可以使用以下代码:

                  epsg_code = 'EPSG:32648'
                  target_srs = osr.SpatialReference()
                  target_srs.ImportFromEPSG(int(epsg_code.split(':')[1]))
                  ds.SetProjection(target_srs.ExportToWkt())

                  上述代码使用epsg_code定义了投影信息代码,然后使用osr.SpatialReference()函数创建了空间参考。ImportFromEPSG()函数解析了epsg_code中的代码为整数型,然后将整数型的代码传递给空间参考中的函数,创建了“WGS 84 / UTM zone 48N”投影系的参考。

                  接下来,可以使用target_srs.ExportToWkt()函数将参考转换为标准的WKT(Well-Known Text)格式,并使用ds.SetProjection()函数设置图片的投影信息。

                  1. 关闭文件:完成以上设置后,需要使用ds.FlushCache()函数刷新数据,以确保修改生效。并且需要使用ds = None语句或del ds语句关闭文件。完整代码如下:

                  ```
                  from osgeo import gdal
                  from osgeo import osr

                  filename = 'test.tif'
                  ds = gdal.Open(filename, gdal.GA_Update)

                  xmin, xres, x_rot, ymax, y_rot, yres = 100, 0.01, 0, 50, 0, -0.01
                  geo_transform = (xmin, xres, x_rot, ymax, y_rot, yres)

                  epsg_code = 'EPSG:32648'
                  target_srs = osr.SpatialReference()
                  target_srs.ImportFromEPSG(int(epsg_code.split(':')[1]))
                  ds.SetProjection(target_srs.ExportToWkt())

                  ds.SetGeoTransform(geo_transform)
                  ds.FlushCache()
                  ds = None
                  ```

                  这个代码将图片的左上角坐标设为(100,50),每个像素的宽度和高度分别设为0.01和-0.01,即每个像素为正方形。这个代码还将图片的投影指定为“WGS 84 / UTM zone 48N”。

                  示例1:将一个无投影的tif文件添加坐标投影

                  ```
                  from osgeo import gdal
                  from osgeo import osr

                  filename = 'test_no_proj.tif'
                  ds = gdal.Open(filename, gdal.GA_Update)

                  xmin, xres, x_rot, ymax, y_rot, yres = 100, 0.01, 0, 50, 0, -0.01
                  geo_transform = (xmin, xres, x_rot, ymax, y_rot, yres)

                  epsg_code = 'EPSG:32648'
                  target_srs = osr.SpatialReference()
                  target_srs.ImportFromEPSG(int(epsg_code.split(':')[1]))
                  ds.SetProjection(target_srs.ExportToWkt())

                  ds.SetGeoTransform(geo_transform)
                  ds.FlushCache()
                  ds = None
                  ```

                  将无痕渲染的NEM视图图像(test_no_proj.tif)从本地打开,添加了坐标投影并输出为新的文件(加坐标后得到的输出文件test.tif)。

                  示例2:修改一个带有投影信息的tif文件的投影

                  ```
                  from osgeo import gdal
                  from osgeo import osr

                  filename = 'test.tif'
                  ds = gdal.Open(filename, gdal.GA_Update)

                  xmin, xres, x_rot, ymax, y_rot, yres = ds.GetGeoTransform()
                  geo_transform = (xmin, xres, x_rot, ymax, y_rot, yres)

                  epsg_code = 'EPSG:4326'
                  target_srs = osr.SpatialReference()
                  target_srs.ImportFromEPSG(int(epsg_code.split(':')[1]))
                  ds.SetProjection(target_srs.ExportToWkt())

                  ds.SetGeoTransform(geo_transform)
                  ds.FlushCache()
                  ds = None
                  ```

                  将一个已经存在“WGS 84 / UTM zone 48N”投影的tif文件(test.tif)从本地打开,将投影修改为EPSG 4326(经纬度)并输出为新的tif文件(输出文件test_4326.tif)。

                  以上就是使用Python和GDAL给图片加坐标系的实现思路,示例代码和相关说明。

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。
                  在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。
                  来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。
                  Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。
                  要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:
                  在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:
                  <tfoot id='V2NNS'></tfoot>
                  <i id='V2NNS'><tr id='V2NNS'><dt id='V2NNS'><q id='V2NNS'><span id='V2NNS'><b id='V2NNS'><form id='V2NNS'><ins id='V2NNS'></ins><ul id='V2NNS'></ul><sub id='V2NNS'></sub></form><legend id='V2NNS'></legend><bdo id='V2NNS'><pre id='V2NNS'><center id='V2NNS'></center></pre></bdo></b><th id='V2NNS'></th></span></q></dt></tr></i><div id='V2NNS'><tfoot id='V2NNS'></tfoot><dl id='V2NNS'><fieldset id='V2NNS'></fieldset></dl></div>
                        <tbody id='V2NNS'></tbody>
                        <bdo id='V2NNS'></bdo><ul id='V2NNS'></ul>

                          1. <small id='V2NNS'></small><noframes id='V2NNS'>

                            <legend id='V2NNS'><style id='V2NNS'><dir id='V2NNS'><q id='V2NNS'></q></dir></style></legend>