解法
Refractions Research 是一家不列颠哥伦比亚省的小型咨询公司,约六人,早期合同来自拒绝使用 ESRI GIS 软件的省级政府管理人员。这一不同寻常的客户群推动公司深入数据库领域。在一个全省范围的流域地图集项目中,团队将切分后的空间数据存储在 PostgreSQL 表中。这次经历使下一个想法变得显而易见:如果数据库能对存储的几何图形做更多操作,而不只是存取,他们就能拥有一个交互式的实时空间分析引擎。
大约在 2000 年,空间数据库意味着 Oracle 8i 的空间数据选项,或 OpenGIS Simple Features for SQL 规范,几乎没有其他选择。该规范描述了三种存储几何的方法:将几何拆分为坐标的旁表、二进制大对象(BLOB),或原生几何类型。Ramsey 最初试图向 BC 政府推销 Oracle 空间咨询,但无人问津。在 PostgreSQL 中测试其他选项均走进死胡同:旁表速度太慢无法使用,BLOB 虽快但无法对几何进行索引。团队几乎要放弃了。
Dave Blasby 是唯一正式学习过计算机科学的开发者,他阅读了 PostgreSQL 的源代码和 contrib 部分,并表示可以构建自定义类型。几天内他就做到了:一种带有 GiST 空间索引的几何类型,连接到公司的 Java 地图小程序后,运行良好——即使对非常大的表也很快。由于 PostgreSQL 扩展没有商业生态系统,Refractions 决定,代码的最佳商业用途是开源发布,让它带来入站客户流量。
2001 年 5 月 31 日,公司以 GPL 许可宣布 PostGIS 0.1:包括几何类型、空间索引和一组初始函数,同事贡献了 Shapefile 加载器、构建文件和文档。开源地理空间世界一直等待:GDAL 的 Frank Warmerdam 和 MapServer 的 Daniel Morissette 在第一个月内就出现在邮件列表中,GeoTools 和 GeoServer 生态系统的开发者也迅速跟进。
What it achieved
深入文档之下,编写规范无法达到的原生类型,然后在客户聚集的地方发布代码
为什么有效
规范中可实现的方案是死胡同;获胜的设计即原生类型,只能通过深入 PostgreSQL 用户文档之下的源代码才能达到。
Oracle 咨询路线没有买家,而开源有明显的需求饥饿:快速增长的开放 GIS 栈没有免费的空间数据库。
没有 PostgreSQL 扩展的商业生态系统,许可证销售不可能;开源是唯一的发行渠道,而作者身份使 Refractions 成为明显的聘请专家。
早期以 0.1 版本发布到公共邮件列表,使 GDAL、MapServer 和 Java 地理空间领导者在几周内采纳,比任何广告更快地累积信誉。
咨询公司作为收入引擎保持不变,而免费代码作为漏斗,因此赠送行为资助了它宣传的工作。
可以借鉴什么
当所有记录在案的方法都失败时,深入一层;当构建的东西无法出售时,在客户聚集的地方免费赠送。
后续
PostGIS 成长为开源 GIS 栈的空间引擎,GDAL、MapServer 和 Java 地理空间项目在 2001 年发布后数周内集成。Blasby 在最初几年维护它;Ramsey 于 2008 年离开公司全职从事 PostGIS 工作,现就职于 Crunchy Data。在二十周年纪念时,它吸引了 302 点 Hacker News 分数;评论者称 PostGIS 基本上是行业标准,甚至 Esri 的波特兰研发中心也使用它,并回忆起采用后前往维多利亚的 Refractions 寻求建议——这正是发布旨在创造的入站流量。
从这里,追溯依据
参考来源
- PostGIS at 20, The Beginning blog.cleverelephant.ca
- [postgis] Initial Release of PostGIS lists.osgeo.org
- PostGIS at 20, the Beginning (Hacker News discussion) news.ycombinator.com