通过API,我想您是指通过HTTP POST / GET类型事件(例如Google Maps API)对数据进行某种网络访问?它是栅格数据还是矢量数据?在此讨论中,我将假定为vector。这实际上只是一种通信协议,而不是应用程序编程接口。
您不需要从头开始设计任何东西,因为有很多标准协议(而不是API本身,我在不使用API时会有点烦人,但我不会让您感到厌烦! )。如果您只想向客户端提供只读矢量数据,则只需要位于数据库前面的WFS服务器即可。我过去曾经使用过GeoServer,但我更喜欢TinyOWS的轻巧性。两者都做同样的工作:将它们配置为访问派生数据的数据库,将它们设置为作为Web服务器的一部分运行(Apache很常见,但我更喜欢lighttpd),您就可以找到它。QGIS可以从WFS服务器加载数据,毫无疑问,Arc可以加载数据。OpenLayers还具有WFS渲染功能,可用于基于浏览器的解决方案。在较低级别,GDAL可用于将数据从WFS转换为OGR支持的任何矢量格式。
如果您想要编辑功能,GeoServer和TinyOWS都支持WFS-T,使您的用户可以将其分析上传回服务器。
创建您自己的API确实会打败最初拥有这些标准的目的,除非您非常专业,并且对性能,性能等有特殊要求,这就是我能想到的。在没有合理资源的情况下走这条路线是一项艰巨的任务,尽管并非没有可能。