新闻

7.2.0发行说明

2020年11月1日

更新

  • 命令行工具

    • 添加多行项目字符串导出功能,并在中默认使用它 projinfo (除非 --single-line (已指定) (#2381

  • 协调操作

  • Database

    • 更新到EPSG 10.003,并使代码库对处理带有DatumEnsemble的WKT CRS具有健壮性 (#2370

    • 增加了轮班操作 (#2392

    • 添加了使用GSIGEO2011从JGD2011 Geographic 3D到JGD2011 height的转换 (#2393

    • 用ESRI WKT1改进垂直CRS中化合物的识别和名称变形 (#2386

    • 补充OGC:CRS27和OGC:CRS83 CRS按经纬度顺序输入NAD27和NAD83 (#2350

  • API

    • 添加了时间、工程和参数化数据 PJ_TYPE 列举 (#2274

    • 对上下文处理的各种改进(#2329,#2331)

    • proj_create_vertical_crs_ex() :添加 ACCURACY 选项提供显式精度,或者从已知的网格名称派生它 (#2342

    • proj_crs_create_bound_crs_to_WGS84() :使其在垂直CR/复合CR上工作,例如EPSG:4326+5773以及EPSG:4326+3855 (#2365

    • promoteTo3D() :添加带有原始CRS标识符的备注 (#2369

    • Added proj_context_clone() (#2383)

错误修复

  • 在某些场景中复制上下文时避免核心转储 (#2324

  • proj_trans() :在尝试使用新的坐标操作重试之前重置错误号 (#2353

  • 修正了PROJJSON模式,允许本初子午线值明确表示单位(假设度) (#2354

  • 调整 createBoundCRSToWGS84IfPossible() 和操作过滤(针对POSGAR 2007到WGS84问题) (#2357

  • createOperations() :影响NAD83->NAD83的多个修复程序(2011) (#2364

  • WKT2:2019导入/导出:使用PRIMEM处理数据(在顶层对象)

  • WKT1U ESRI:修复复合材料的进出口 (#2389

7.1.1发行说明

2020年9月1日

更新

  • 在数据库中添加了各种巴西网格 (#2277

  • 将加那利群岛的大地水准面文件添加到数据库中 (#2312

  • 将EPSG数据库更新到9.8.15版本 (#2310

错误修复

  • WKT解析器:解析时间单位为CS级别且不在内部的WKT2:2015 TIMECRS时,不要发出警告 (#2281

  • 分析“+proj=somethingu notu latlong+vunits=”,不将+geoidgrids作为投影三维CRS,而不是具有未知数据的复合CRS (#2289

  • C API:避免由于入口点中缺少SANITIZEu CTX()而导致崩溃 (#2293

  • CMake构建:使用前检查“目标克隆” (#2297

  • PROJ string export of+PROJ=krovak+捷克语:确保我们导出+捷克语… (#2301

  • Helmert 2D:不需要无用的+约定=参数 (#2305

  • 修复一些拼写错误(“vgridshit”与“vgridshift”) (#2307

  • 修复识别能力EPSG:2154 as公司“RGF93u Lambertu 93”的候选人 (#2316

  • WKT导入器:针对Oracle WKT和“Lambert共形圆锥曲线”进行调整 (#2322

  • 还原编译器生成的融合乘法加法优化例程 (#2328

7.1.0发行说明

2020年7月1日

更新

  • 新的转变

    • 为基于时间的多分量变形模型添加a+proj=defmodel变换 (#2206 ):

  • 新的预测

  • Database

    • 更新至EPSG 9.8.12、ESRI 10.8.1以及导入范围和转换备注 (#2238 ) (#2267)

    • 将贝尔曼投影映射到 cae 转换ESRI CRES时 (#1986

    • 平面极四次投影法的支撑转换 (#1987

    • 登记4个新奥地利高度网格(参见https://github.com/OSGeo/PROJ-data/pull/13)并处理“垂直偏移网格插值(BEV-AT)”方法 (#1989

    • 为墨卡托变型A、墨卡托变型B和横向圆柱等面积以及各种网格映射添加ESRI投影法映射 (#2020 ) (#2195)

    • 将ESRI横轴墨卡托复合体映射到横轴墨卡托复合体 (#2040

    • 为新喀里多尼亚登记网格(见https://github.com/OSGeo/PROJ-data/pull/16) (#2051 ) (#2239)

    • 为NZGD2000数据库注册NZGD2000->ITRF96转换 (#2248

    • 已添加英国的注册大地水准面文件(请参见https://github.com/OSGeo//PROJ-data/pull/25() (#2250

    • 用所需的代码更改注册斯洛伐克大地水准面转换 (#2259

    • 为ED50->ETRS89注册西班牙语SPED2ETV2网格 (#2261

  • API

    • Add API function proj_get_units_from_database() (#2065)

    • Add API function proj_get_suggested_operation() (#2068)

    • Add API functions proj_degree_input() and proj_degree_output() (#2144)

    • Moved proj_context_get_url_endpoint() & proj_context_get_user_writable_directory() from proj_experimental.h to proj.h (#2162)

    • createFromUserInput() :允许复合CRS具有2个由名称给出的部分,例如“WGS 84+EGM96高度” (#2126

    • createOperations() :在转换CompoundCRS<-->Geographic3DCrs时,如果涉及Helmert变换,请不要使用“放弃更改椭球体高度” (#2227

  • Optimizations

    • tmerc/utm :添加+algo=auto/evendenu snyder/poderu engsager参数 (#2030

    • 扩展 tmerc (Poder/Engsager):速度优化 (#2036

    • 近似值 tmerc (斯奈德):速度优化 (#2039

    • pj_phi2() :加速计算(从而实现反椭球墨卡托和LCC) (#2052

    • 反向 cart :计算速度提高33% (#2145

    • 扩展 tmerc :向前路径加速约5% (#2147

  • Various

    • 遵循PDAL的CMake RPATH策略 (#2009

    • WKT导入/导出:添加对WKT1u ESRI VERTCS synta的支持 (#2024

    • projinfo :添加 --hide-ballpark 选项 (#2127

    • gie: implement a strict mode with <gie-strict> </gie-strict> (#2168)

    • Allow importing WKT1 COMPD_CS with a VERT_DATUM[Ellipsoid,2002] (#2229)

    • 添加运行时检查sqlite3是否>=3.11 (#2235

错误修复

  • createOperations() :如果只有基于网格的操作,即使它们覆盖了整个使用区域,也不要删除ballpark转换 (#2155

  • createFromProjString() :handle“+krovak+type=crs”的默认参数和handle +czech 正确地 (#2200

  • ProjectedCRS::identify() :固定标识EPSG:3059 (#2215

  • 数据库:为数据库添加“WGS84”别名电子病历:4326 CRS (#2218

  • 与CompoundCRS和BoundCRS相关的修复 (#2222

  • 避免2个关于缺少数据库索引的警告 (#2223

  • 制作 projinfo --3d --boundcrs-to-wgs84 工作得更好 (#2224

  • 许多关于BoundCRS,CompoundCRS,Geographic3D CRS和非米单位的修正 (#2234

  • 确定ESRI WKT的(一种)剂型EPSG:3035 (#2240

  • 避免使用Windows W32 API删除函数 (#2246

  • normalizeForVisualization() :使其切换轴EPSG:5482(RSRGD2000/RSPS2000) (#2256

  • Fix access violation in proj_context_get_database_metadata() (#2260)

7.0.1发行说明

2020年5月1日

更新

  • 数据库:更新至epsgv9.8.9 (#2141

错误修复

  • 使测试独立于项目数据网格 (#1995

  • 添加缺少的投影属性表 (#1996

  • Avoid crash when running against SQLite3 binary built with -DSQLITE_OMIT_AUTOINIT (#1999)

  • createOperations(): fix wrong pipeline generation with CRS that has +nadgrids= and +pm= (#2002)

  • 修复HEALPix和rHEALPix投影名称上的错误复制和替换模式 (#2007

  • createUnitOfMeasure() :对转换因子使用全双倍分辨率 (#2014

  • 用项目数据信息更新自述文件 (#2015

  • utm/ups: make sure to set errno to PJD_ERR_ELLIPSOID_USE_REQUIRED if +es==0 (#2045)

  • data/Makefile.am :删除bashism (#2048

  • ProjectedCRS::identify() :调整它以更好地使用的ESRI WKT表示EPSG:2193 (#2059

  • 使用gcc 4.8.5修复构建 (#2066

  • Autotools/pkg conf:定义datarootdir (#2069

  • cs2cs: don't require +to for '{source_crs} {target_crs} filename...' syntax (#2081)

  • CMake:修复错误 find_package(PROJ) 使用macOS (#2082

  • ESRI WKT进口/标识:NADU 1983U HARNU州际飞机U ColoradoU NorthFIPSU 0501的特例,带英尺美国单位 (#2088

  • ESRI WKT进口/标识:NADU 1983U HARNU州际飞机U ColoradoU NorthFIPSU 0501的特例,带英尺美国单位 (#2089

  • 工程CRS:输出到WKT1GDAL时,输出单位和轴 (#2092

  • 使用CDN中的jtsk03 jtsk水平网格 (#2098

  • CMake:更喜欢使用PROJu SOURCEu DIR和PROJu BINARYu DIR (#2100

  • 修复中错误的网格文件名sql.esri (#2104

  • 修复名称接近但不严格等于ESRI别名的投影CR的标识 (#2106

  • Helmert变换在两个复合材料水平部分之间的固定工作 (#2111

  • 数据库:修复网格转换自定义项的注册_自定义.sql大地水准面网格 (#2114

  • ESRIU WKT摄取:确保尽可能识别未弃用的EPSG条目 (#2119

  • 确保从导入投影的3D CRSWKT:2019年基础地理CRS为3D (#2125

  • createOperations() :将compoundCRS的结果改进为compoundCRS案例 (#2131

  • hgridshift/vgridshift:当网格已经打开时延迟网格打开 (#2132

  • 解决一些隐藏的声明警告 (#2142

  • ProjectedCRS标识:处理LCCU 2SP的交换第一/第二标准并联 (#2153

  • 固定罗宾逊逆投影 (#2154

  • createOperations() :如果只有基于网格的操作,即使它们覆盖了整个使用区域,也不要删除ballpark转换 (#2156

  • createFromCoordinateReferenceSystemCodes() 避免使用C++异常的“优化” (#2161

  • WKT1 GDAL摄入:正确映射“圆柱形面积” (#2167

  • 添加对不符合WKT1 LAS COMPDu CS[]的有限支持 (#2172

  • PROJ4字符串导入:当字符串看起来像WGS 84/Pseudo Mercator的字符串时,正确考虑非米单位 (#2177

  • io.hpp: avoid dependency to proj_json_streaming_writer.hpp (#2184)

  • 用netCDF旋转杆公式固定WKT1_GDAL的支架 (#2186

6.3.2发行说明

2020年5月1日

错误修复

  • validateParameters() :在等距圆柱上修复假阳性警告 (#1947

  • proj_create_crs_to_cr() :将使用区域重新投影到源和目标CR时,避免潜在的重新投影失败 (#1993

  • createOperations(): fix wrong pipeline generation with CRS that has +nadgrids= and +pm= (#2003)

  • 修复HEALPix和rHEALPix投影名称上的错误复制和替换模式 (#2006

  • createUnitOfMeasure() :对转换因子使用全双倍分辨率 (#2013

  • data/Makefile.am :删除bashism (#2047

  • :cpp:func:``ProjectedCRS::identify` : tune it to better work with ESRI WKT representation of EPSG:2193 (`#2058)

  • 工程CRS:输出到WKT1GDAL时,输出单位和轴 (#2091

  • 在来自ESRI条目的葡萄牙网格的网格替换项中添加缺少的条目 (#2103

  • Helmert变换在两个复合材料水平部分之间的固定工作 (#2110

  • ESRIU WKT摄取:确保尽可能识别未弃用的EPSG条目 (#2118

  • 确保从导入投影的3D CRSWKT:2019年基础地理CRS为3D (#2124

  • createOperations() :将compoundCRS的结果改进为compoundCRS案例 (#2130

  • PROJ4字符串导入:当字符串看起来像WGS 84/Pseudo Mercator的字符串时,正确考虑非米单位 (#2178

  • 用netCDF旋转杆公式固定WKT1_GDAL的支架 (#2187

  • io.hpp: avoid dependency to proj_json_streaming_writer.hpp (#2188)

7.0.0发行说明

2020年3月1日

项目7的主要特点是显著改进了网格模型的处理。这是在年实施的 项目RFC 4:远程访问网格和GeoTIFF网格 . RFC4工作的主要特点是PROJ现在实现了一种新的网格格式,geodetictiff grids,用于交换网格转换模型。除了新的网格格式,PROJ现在还可以使用云中的数据存储在线访问网格。

以前通过proj datumgrid包提供的网格现在有两个地方:

  1. 作为包含所有可用资源文件的单个组合数据存档

  2. 从云端通过https://cdn.proj.org

此外,PROJ提供了一个名为 projsync 可以从云中的数据存储下载网格。

使用新的网格格式和来自云的数据需要根据 libtifflibcurl . 两者都是PROJ的可选依赖项,但强烈建议根据两者构建软件。

警告

PROJ 7将是最后一个主要版本,包括 proj_api.h 标题。中的功能 proj_api.h 已弃用,仅在维护模式下受支持。它不如中的函数所提供的功能 proj.h 头和所有项目仍然依赖 proj_api.h 鼓励迁移到中的新API proj.h . 见 版本4到6 API迁移 . 有关如何从旧API迁移到新API的更多信息。

更新

  • Added new file access API to proj.h (#866)

  • 将WKT2标准最新版本的名称从WKT2U 2018更新至WKT2U 2019,以反映标准的正确名称 (#1585

  • 从/到WGS 84(Gxxxx)实现和垂直<-->geog转换的改进 (#1608

  • 更新至测地线库1.50版 (#1629

  • Promote proj_assign_context() to proj.h from proj_experimental.h (#1630)

  • 向HEALPix投影添加旋转支持 (#1638

  • Add C function proj_crs_create_bound_vertical_crs() (#1689)

  • 使用Win32 Unicode API并期望所有字符串都是UTF-8 (#1765

  • 改进的名称别名查找 (#1827

  • CMake:更好地使用CTest和 BUILD_TESTING 选项 (#1870

  • 网格校正:修复跨越反三角形的网格处理 (#1882

  • Remove legacy CMake target name proj (#1883)

  • projinfo 添加 --searchpaths 转换 (#1892

  • 添加 +proj=set operation 将坐标分量设置为固定值的步骤 (#1896

  • Add EPSG records for 'Geocentric translation by Grid Interpolation (IGN)' (gr3df97a.txt) and map them to new +proj=xyzgridshift (#1897)

  • 去除 null 网格文件,因为它现在是网格代码中一个特殊的硬编码案例 (#1898

  • 添加 projsync 效用 (#1903

  • 制作 PROJ CMake项目名称 (#1910

  • 使用相对目录定位项目资源文件 (#1921

错误修复

  • 水平网格移动:修复子网格稍外点的故障 (#209

  • 用SQLite3VFS类修复ASAN问题 (#1902

  • tests: force use of bash for proj_add_test_script_sh (#1905)

正在中断更改

  • Reject NTV2 files where GS_TYPE != SECONDS (#1294)

  • 在Windows上,库的名称现在固定为 proj.lib 而不是在库名称中编码版本号 (#1581

  • 需要C99编译器 (#1624

  • 删除不推荐使用的JNI绑定 (#1825

  • Remove -ld option from proj and cs2cs (#1844)

  • 将CMake最低版本从3.5增加到3.9 (#1907

6.3.1发行说明

2020年2月11日

更新

  • 将EPSG数据库更新到9.8.6版本

  • 数据库:为gg10U smv2.mnt和gg10U sbv2.mnt法国网格添加映射

  • 数据库:为TOR27CSv1.GSB添加映射

错误修复

  • 修复导致+init使用问题的derivingConversionRef()的错误使用=epsg:XXXX签署人GDAL(影响R空间库)或在MapServer中

  • 修复了将CoordinateSystem导出到ID为的PROJ JSON的问题

  • projinfo:使用编号缩写代替UTF-8字符 (#1828

  • CompoundCRS::identify():当水平/垂直部分是BoundCRS时避免异常

  • createOperations():修复处理Z单位的投影3D CR!=米

  • WKT1u GDAL导出:将数据名称消息限制为与EPSG匹配的名称 (#1835

  • 使用mjd时间格式的unitconvert:避免潜在的整数溢出(ossfuzz 20072)

  • ProjectedCRS::identify():修复链接到单元的某些ESRI WKT的错误标识

  • 数据库:为网格备选方案的proju method列添加一个类大地水准面值,修复相关条目并简化/增强逻辑以处理EPSG“Geographic3D to GravityRelatedHeight”方法

  • 用+ku 0修复+proj=cea的摄取 (#1881

  • 修复性能问题,影响项目4字符串的生成EPSG:7842 (#1913

  • 修复以 D_ 但没有别名 (#1911

  • cart:在相反的情况下,避免极不连续 (#1906

  • 使回归测试套件在i386上通过gcc的各种更新 (#1906

6.3.0发行说明

2020年1月1日

更新

  • 数据库:加拿大NTv1文件w.r.t NTv2的调谐精度 (#1812

  • 修改某些调试/跟踪消息的详细级别 (#1811

  • projinfo :不再为WKT1调用createBoundCRSToWGS84IfPossible():GDAL (#1810

  • proj_trans() :添加重试逻辑以在最佳转换失败时选择其他转换。 (#1809

  • BoundCRS::identify(): improvements to discard CRS that aren't relevant (#1802)

  • 数据库:更新至IGNF v3.1.0 (#1785

  • 生成:仅在生成DLL时导出符号 (#1773

  • 数据库:使用ArcGIS Desktop版本10.8.0数据库更新ESRI条目 (#1762

  • createOperations() :中间CR不相同但具有相同基准的链式操作 (#1734

  • 导入/导出PROJJSON:支持geoid模型的插值u crs键 (#1732

  • 数据库:更新至epsgv9.8.4 (#1725

  • 内部版本:需要SQLite 3.11 (#1721

  • 添加对GEOIDMODEL的支持 (#1710

  • 基于范围和性能改进的更好过滤 (#1709

错误修复

  • 水平网格移动:解决了在(子)网格之间切换时迭代求逆的问题 (#1797

  • createOperations() :使筛选出“无趣”操作的攻击性降低 (#1788

  • 制造EPSG:102100分辨率至ESRI:102100 (#1786

  • ob_tran :恢复对 +to_meter 具有 pj_transform()proj 效用 (#1783

  • CRS标识:对授权名称使用不区分大小写的比较 (#1780

  • normalizeForVisualization() 以及其他应用于ProjectedCRS的方法:不要弄乱原始对象的derivingConversion对象 (#1746

  • createOperations() :使用 +geoidgrids+vunits !=米 (#1731

  • 固定 proj_assign_context()/pj_set_ctx() 与管道和其他合作经营 (#1726

  • 数据库:添加一个辅助连接的u操作u步骤表,以允许任意数量的步骤 (#1696

  • 修复在Windo上以调试模式运行基于gie的测试时出现的错误 (#1688

6.2.1发行说明

2019年11月1日

更新

  • 将EPSG数据库更新到9.8.2版本

错误修复

  • 修正了“波茨坦”的拼写错误 (#1573

  • 正确计算y坐标 伯丁1953 在所有情况下 (#1579

  • proj_create_crs_to_crs_from_pj(): make the PJ* arguments const PJ* (#1583)

  • PROJStringParser::createFromPROJString(): avoid potential infinite recursion (#1574)

  • Avoid core dump when setting ctx==NULL in functions proj_coordoperation_is_instantiable() and proj_coordoperation_has_ballpark_transformation() (#1590)

  • createOperations(): fix conversion from/to PROJ.4 CRS strings with non-ISO-kosher options and +towgs84/+nadgrids (#1602)

  • proj_trans_generic() :将坐标时间正确设置为 HUGE_VAL 当没有值传递给函数时 (#1604

  • Fix support for +proj=ob_tran +o_proj=lonlat/latlong/latlon instead of only only allowing +o_proj=longlat (#1601)

  • 提高垂直变换的向后兼容性 (#1613

  • 改进不推荐的 +init 样式初始化 (#1614

  • cs2cs :当2D和3D混合使用时,自动将CRS升级到3D (#1563

  • 在奇数情况下避免被零除 (#1620

  • 避免Solaris上的编译错误 (#1639

  • proj_create_crs_to_crs() :仅存在具有大致步骤的转换时修复 (#1643

  • PROJ string CRS摄取器:识别更多的单元较少的参数,并对 +key=string_value 参数 (#1645

  • 仅在必要时在configure中调用pkg config (#1652

  • 方位等距 :对于球形正向路径,当点坐标超接近原点时,转到更高精度的椭球体情况 (#1654

  • proj_create_crs_to_crs() :删除在某些情况下导致转换失败的基本操作 (#1665

  • createOperations() :允许从绑定垂直CR的复合CR转换为二维CR (#1667

  • 在内存不足的情况下避免SEGDULTS (#1679

  • createOperations() :当投影CR的水平部分使用非米单位时,固定从复合CR到其他CR的双垂直单位转换(#1683) (#1683

  • importFromWkt() :非标准ESRI WKT的固定轴方向 (#1690

6.2.0发行说明

2019年9月1日

更新

  • 介绍 PROJJSON ,WKT2的JSON编码 (#1547

  • 支持OGC URN的CRS实例化 (#1505

  • 公开数据库对象的作用域和备注 (#1537

  • EPSG数据库已更新至9.7.0版本 (#1558

  • 添加了C API函数proju gridu getu infou fromu database() (#1494

  • 添加了C API函数proju operationu factoryu contextu setu discardu supervered() (#1534

  • 添加了C API函数proju contextu setu autocloseu database() (#1566

  • 添加了C API函数proj u create u crs u to u crs u from u pj() (#1567

  • 添加了C API函数proju cleanup() (#1569

漏洞修补

  • 修复了Solaris系统上的生成失败 (#1554

6.1.1发行说明

2019年7月1日

更新

  • 将EPSG registry更新至9.6.3版本 (#1485

漏洞修补

  • 在识别对象时考虑传递的权限 (#1466

  • 使用NAD83(2011)从NAD83转换为预测CRS时避免异常 (#1477

  • 如果资源文件的名称的长度为1,则通过读取名称参数来避免关闭 (#11489

  • 不包括 PROJ_LIB 在里面 proj_info().searchpath 设置上下文搜索路径时 (#1498

  • 在分析PROJ_LIB时为当前平台使用正确的分隔符 (#1497

  • 不要将“ID74”CRS与WKT2 ID[]节点混淆 (#1506

  • WKT1导入程序:对轴方向进行不区分大小写的比较 (#1509

  • 避免GCC4.9.3中的编译错误 (#1512

  • 确保管道包括 +proj=ob_tran 可以创建 (#1526

6.1.0发行说明

2019年5月15日

更新

  • 包括来自QGIS的自定义椭球体定义 (#1137

  • 添加 -k ellipsoid 项目选择权 (#1338

  • 使cs2cs支持4D坐标 (#1355

  • WKT2解析器:更新到ogc18-010r6 (#1360 #1366

  • 将googletest的内部版本更新为v1.8.1 (#1361

  • 数据库更新:epsgv9.6.2 (#1462 ),IGNF v3.0.3,ESRI 10.7.0和add operationu version列 (#1368

  • 添加 proj_normalize_for_visualization() 它试图应用大多数GIS应用程序和PROJ<6使用的轴排序 (#1387

  • 增加了noop操作 (#1391

  • 用户设置的路径优先于 PROJ_LIB 搜索路径 (#1398

  • 减少了数据库大小 (#1438

  • 添加对CompoundCR和从其组件命名的连接操作的支持 (#1441

错误修复

  • gie 无法打开文件时返回非零代码 (#1312

  • CMake交叉编译修复程序 (#1316

  • 在莫洛登斯基中使用第一偏心率而不是第二偏心率 (#1324

  • 在使用nadgrids+geoidgrids变换进行地心合成crs时,请确保包含网格 (#1326

  • 更好地处理bbox以外的坐标 (#1333

  • 在生成中自动启用命令行中的系统错误消息 (#1336

  • 确保用CMake安装projinfo手册页 (#1347

  • 将数据目录添加到pkg配置文件项目pc (#1348

  • Fix GCC 9 warning about useless std::move() (#1352)

  • 网格相关修复 (#1369

  • 确保ISO19111 C++代码设置PJYErNO错误 (#1405

  • vgridshift:处理经度范围为360度的网格的经度环绕 (#1429

  • proj/cs2cs :验证的值 -f 避免潜在崩溃的参数 (#1434

  • OSS Fuzz发现了许多类似的错误修复。

6.0.0发行说明

2019年3月1日

PROJ 6经历了广泛的变化,以扩大其功能范围,从一个具有所谓“早期绑定”大地基准转换能力的地图投影引擎,到一个支持坐标转换和坐标参考系的更完整的库。

作为其他增强的基础,PROJ现在包括了由ISO-19111:2019标准/OGC抽象规范主题2所提出的模型化的C++实现:“坐标参考”,大地测量参考帧(基准)、坐标参考系统和坐标操作。这些大地测量对象的构造和查询是通过一个新的C++ API实现的,并且大部分可以从C API中的绑定访问。

这些大地测量对象可以从OGC众所周知的文本格式(WKT)导入和导出,并以其不同的变体导入和导出:ESRI WKT、GDAL WKT 1、WKT2:2015(ISO 19162:2015)和WKT2:2018(ISO 19162:2018)。还支持从项目字符串导入和导出CRS对象。此功能以前在GDAL软件库中可用(WKT2支持除外,这是一个新特性),现在是PROJ不可分割的一部分。

一个统一的大地测量对象数据库,坐标参考系统及其元数据,以及这些CRS之间的坐标操作现在可以在SQLite3数据库文件中使用,项目数据库. 这包括从IOGP EPSG数据集(v9.6.0版本)、IGNF(法国国家测绘局)大地测量注册表和ESRI投影引擎数据库导入的定义。PROJ现在是这个CRS和coordinate operation数据库的“OSGeo C stack”中的参考软件,而以前这个功能是分布在PROJ、GDAL和libgeotiff上的,并且使用CSV或其他基于临时文本的格式。

添加了后期绑定协调操作功能,该功能将元数据(如使用区域和准确性)考虑在内。在许多情况下,这可以避免过去使用WGS84作为枢轴系统的要求,这可能会导致不必要的精度损失,或者在无法转换为WGS84时根本不可行。这些后期绑定功能现在由proju create u crs u to u crs()函数和cs2cs实用程序使用。

添加了一个新的命令行实用程序projinfo,用于查询有关数据库大地测量对象的信息,从WKT和PROJ字符串导入和导出大地测量对象,以及显示两个crs之间可用的坐标操作。

UPDATES

  • 删除了projects.h作为公共接口 (#835

  • 不推荐使用proju api.h接口。头文件仍然可用,但将随PROJ的下一个主要版本一起删除。现在需要定义 ACCEPT_USE_OF_DEPRECATED_PROJ_API_H 在接口可以使用之前 (#836

  • 删除了对nmake生成系统的支持 (#838

  • 移除了对 proj_def.dat 默认文件 (#201

  • 构建PROJ所需的C++ 11 (#1203

  • 添加了对SQLite 3.7的生成依赖 (#1175

  • 补充 projinfo 命令行应用程序 (#1189

  • 添加了许多功能到 proj.h 用于处理ISO19111功能 (#1175

  • 添加C++ API公开ISO19111功能 (#1175

  • 更新的 cs2cs 使用后期绑定功能 (#1182

  • 移除 nad2bin 应用程序。现在可在 proj-datumgrid GIT仓库 (#1236

  • Removed support for Chebyshev polynomials in proj (#1226)

  • 远离的 proj_geocentric_latitude()proj.h API (#1170

  • Changed behavior of proj :只允许投影 (#1162

  • Changed behavior of tmerc: Now defaults to the Extended Transverse Mercator algorithm (etmerc). Old implementation available by adding +approx (#404)

  • 更改行为:默认椭球现在设置为GRS80(是WGS84) (#1210

  • 允许中有多个目录 PROJ_LIB 环境变量 (#1281

  • 补充 Lambert Conic Conformal (2SP Michigan) 投影 (#1142

  • 补充 Bertin1953 投影 (#1133

  • 补充 Tobler-Mercator 投影 (#1153

  • 补充 Molodensky-Badekas 转型 (#1160

  • 补充 pushpop 协调操作 (#1250

  • 远离的 +t_obs helmert参数与变形 (#1264

  • Added +dt parameter to deformation as replacement for removed +t_obs (#1264)

错误修复

  • +towgs84 不使用点作为逗号分隔符的区域设置上的值 (#1136

  • 修正了读取NTv1文件中移位值的文件偏移量 (#1144

  • 避免出现问题 PTHREAD_MUTEX_RECURSIVE 使用CMake时 (#1158

  • 避免在将椭球展平设置为零时引发错误 (#1191

  • 固定下平方计算 rHealpix 投影 (#1206

  • 允许 Molodensky 将参数转换为零 (#1194

  • 修复了中的错误参数 ITRF2000 初始化文件 (#1240

  • 固定使用网格路径,包括空间 (#1152

  • Robinson :修复纬度>=87.5的正向路径的错误值,并修复不准确的反向方法 (#1172

项目5.2.0

2018年9月15日

UPDATES

  • 在unitconvert中增加了对deg、rad和grad的支持 (#1054

  • 假定 +t_epoch 未另行规定时作为时间输入 (#1065

  • 附加逆拉格朗日投影 (#1058

  • 补充 +multiplier vgridshift选项 (#1072

  • 添加等地球投影 (#1085

  • 增加了“需要网格”选项 (#1088

  • 替换 +transpose 选择Helmert变换 +convention . 从现在起,使用的公约应该明确地写出来。使用+转置选项时将返回错误 (#1091

  • 提高反球墨卡托投影的数值精度 (#1105

  • cct 现在将坐标输入后的文本转发到输出流 (#1111

错误修复

  • 在使用geocent进行cs2cs仿真时,不要在WGS84上旋转 (#1026

  • Do not scan past the end of the read data in pj_ctx_fgets() (#1042)

  • 确保 proj_errno_string() 在DLL中可用 (#1050

  • 尊重 +to_meter setting when doing cs2cs-emulation (#1053

  • Fixed unit conversion factors for geod (#1075)

  • 修复了与GCC 8相关的测试失败 (#1084

  • 改进了对 +geoc flag (#1093

  • 计算Webmercator的正确投影因子 (#1095

  • cs2cs 现在,当变换的坐标以角度为单位时,总是输出度数 (#1112

项目5.1.0

2018年6月1日

UPDATES

  • 功能 proj_errno_string() 添加到 proj.h API (#847

  • 验证管道步骤之间的单元并确保转换健全 (#906

  • 呼叫时打印帮助 cctgie 没有争论 (#907

  • CITATION file added to source distribution (#914)

  • 添加了Webmercator操作 (#925

  • 赤道附近前向球墨卡托数值精度的提高 (#928

  • Added --skip-lines option to cct (#923)

  • 始终如一的回报 NaN 上的值 NaN 输入 (#949

  • 移除未使用 src/org_proj4_Projections.h 文件 (#956

  • 已更新Java本机接口绑定 (#957#969

  • 扩展到时域的水平和垂直网格移动操作 (#1015

错误修复

  • Handle NaN float cast overflow in PJ_robin.c and nad_intr.c (#887)

  • 避免在霍纳订单过大时溢出 (#893

  • 在etmerc中避免不必要的NaN转换 (#899

  • 避免内存故障 gie 在gie文件中不指定x、y、z时 (#902

  • 避免出现内存故障 +sweep 在geos中初始化不正确 (#908

  • 返回 HUGE_VAL 论正交输入法中的错误输入 (#912

  • 在cct中正确处理注释行 (#933

  • 变形过程中变换坐标在网格区域外时避免分割错误 (#934

  • 避免在笛卡尔坐标系上进行错误的东距/北距调整 (#936

  • 线程安全创建项目互斥 (#954

  • 使用+latu 0设置geos时避免错误!=0 (#986

  • 运行时重置错误号 proj 在详细模式下 (#988

  • 不要在垂直网格移动的nodata值处插入节点值 (#1004

  • 将Horner度数限制为正整数值以避免内存分配问题 (#1005

项目5.0.1

2018年3月1日

错误修复

  • 正确处理管道中椭球体的变化 +towgs84=0,0,0 被设定 (#881

  • 处理nadu ctable2u init返回NULL的情况 (#883

  • 使用旧gcc避免隐藏声明错误 (#880

  • 展开 +datum 在管道中正确安装 (#872

  • 在网格文件中遇到不正确的头时,将正常失败 (#875

  • Improve roundtrip stability in pipelines using +towgs84 (#871)

  • 修复了gie错误代码中的拼写错误 (#861

  • 测地线包的数值稳定性修正 (#826 & #843

  • 确保正确返回瞬时错误 (#857

  • 确保在本地安装时不使用项目头文件 (#849

  • Fix inconsistent parameter names in proj.h/proj_4D_api.c (#842)

  • 确保 +vunits 已应用 (#833

  • 修复不正确的Web墨卡托变换 (#834

项目5.0.0

2018年2月1日

这个版本的PROJ引入了一些重要的扩展和改进(主要是)系统的大地测量功能。

引入这些新特性的主要驱动力是动态参考系的出现、高精度全球导航卫星系统的日益使用以及对精确坐标变换的相关日益增长的需求。虽然旧版本的PROJ包含一些大地测量功能,新的框架为将PROJ转换成通用的地理空间坐标转换引擎奠定了基础。

库的核心仍然是完善的投影代码。新功能主要在新的编程接口和新的命令行实用程序中公开, cct (用于“坐标转换和变换”)。旧的编程接口仍然可用,并且在某种程度上可以使用新的大地坐标变换功能。

内部架构也发生了许多变化和改进。到目前为止,这些改进尊重了现有的编程接口。但是这个过程揭示了简化和减少代码库的必要性,以便支持持续的主动开发。

Therefore we have scheduled regular releases over the coming years which will gradually remove the old programming interface.

This will cause breaking changes with the next two major version releases, which will affect all projects that depend on PROJ (cf. section "deprecations" below).

打破现有API的决定并不容易,但最终被认为是确保项目长期生存所必需的。不仅极大地提高了可维护性,而且还扩展了潜在的用户(以及开发人员)社区。

最终目标是提供一个通用的坐标转换软件包,该软件包具有简洁明了的代码库,对用户和开发人员都有吸引力。

版本控制和命名

软件的主要版本号25年来首次发生变化。这样做的决定基于许多新特性和新API。尽管向后兼容性仍然存在(除了少数少数情况),但添加新的和改进的编程接口保证了新的主要版本。

不幸的是,新的主要版本号使项目在名称方面有点困难。在产品的大部分生命周期中,它被称为PROJ.4,但由于我们现在已经达到版本5,名称不再与版本号一致。

因此,我们决定将名称从版本号中分离出来,从这个版本开始,产品将被简单地称为PROJ。

在软件开发的历史中,我们保持着 组织项目名称 . 同一个项目团队还生成了基准网格包。

综上所述:

  • PROJ.4项目提供了产品PROJ,现在的版本是5.0.0。

  • PROJ的基础组件是libproj库。

  • 其中PROJ libproj提供了一个包含其他组件的命令行接口。

  • PROJ.4项目还分发了datum grid包,在编写本文时,该包的版本是1.6.0。

更新

  • 在中引入了新的API proj.h .

    • 新API与现有API正交 proj_api.h API和内部使用的 projects.h 应用程序编程接口。

    • 新的API增加了转换时空(4D)坐标的能力。

    • 新API中的函数使用 proj_ 命名空间。

    • 新API中的数据类型使用 PJ_ 命名空间。

  • 介绍了“转换管道”的概念,通过菊花链简单的坐标操作,可以进行复杂的坐标大地转换。

  • 介绍 有条件现金流 坐标转换及变换应用。

  • 介绍 地理空间完整性调查环境。

    • 调用的自检 -C 标记 PROJ 已删除

    • 将大约1300个内置自检移植到 格式

    • 从gigs测试框架移植了大约1000个测试

    • 新增约200项新测试

  • 采用OGC/ISO-19100地理空间标准系列中的术语。主要定义如下:

    • 在最普通的层面上,一个 协同作战 是基于一对一关系,从一个坐标参照系到另一个坐标参照系的坐标变化。

    • A 转型 是一种坐标操作,其中两个坐标参照系基于不同的基准,例如从全局参照系到区域参照系的变化。

    • A 转换 是一种坐标操作,其中两个坐标参考系基于相同的基准,例如坐标单位的变化。

    • A 投影 是从椭球坐标系到平面的坐标转换。尽管投影只是根据标准进行的转换,但它们在PROJ中被视为单独的实体,因为它们构成了库中的绝大多数操作。

  • 新业务

  • 重要的文档更新,包括

  • 操作定义的新“自由格式”选项,允许在指定键/值对时用空格分隔标记,例如。 proj = merc lat_0 = 45 .

  • 将元数据添加到可以用 proj_init_info() 在新的 proj.h 应用程序编程接口。

  • 添加了ITRF2000、ITRF2008和ITRF2014 init文件,其中包含ITRF转换参数,包括板运动模型参数。

  • 为GSK2011、PZ90和“丹麦语”添加了椭球体参数。后者类似于已经支撑的安德雷椭球体,但有一个稍微不同的半长轴。

  • 增加了哥本哈根本初子午线。

  • 将EPSG数据库更新到9.2.0版本。

  • 已更新到49.1.2版Geodesic库。

  • 对分析偏导数的支持已被取消。

  • 提高了Winkel-Tripel和Aitoff的性能。

  • 介绍 pj_has_inverse() 函数到 proj_api.h . 检查操作是否有反转。用这个代替检查 P->inv 已经存在了,因为这已经不可依赖了。

  • ABI版本号更新为13:0:0。

  • 已删除对Windows CE的支持。

  • 已删除VB6 COM接口。

错误修复

  • 修正了Lambert共形圆锥曲线的不正确收敛计算。 (#16

  • 使用时正确处理椭球体参数 +nadgrids=@null . (#22

  • 在横轴墨卡托中使用负北距时返回正确的纬度。 (#138

  • 在反向模式中返回原点处的正确结果。阿拉斯加的立体图。 (#161

  • 在反向模式中返回原点处的正确结果。48美国。 (#162

  • 在反向模式中返回原点处的正确结果。美国50。 (#163

  • 在逆Lee扁圆赤平极图中返回原点处的正确结果。 (#164

  • 在逆米勒扁圆赤平极图原点返回正确结果。 (#165

  • 修正了倾斜圆柱等面积的缩放和环绕问题。 (#166

  • 修正了反横墨卡托中的系数误差。 (#174

  • 尊重 -r 呼叫时的标志 proj 具有 -V . (#184

  • 消除赤平投影赤道误差处的乘法2。 (#194

  • 使用斜墨卡托时允许+alpha=0和+gamma=0。 (#195

  • 当alpha在90和270之间时,返回反斜角墨卡托的正确结果。 (#331

  • 在访问网格外的点时避免分段错误。 (#396

  • 避免Robin逆中NaN输入的分段错误。 (#463

  • Very verbose use of proj (-V) on Windows is fixed. (#484)

  • 修复了一般斜变换中的内存泄漏问题。 (#497

  • 对于非共形投影,子午线收敛方程和偏导数方程已得到修正。 (#526

  • 中笛卡尔坐标的固定标度 pj_transform() . (#726

  • 额外的错误修复 Google's OSS-Fuzz program