2

我想实时跟踪几百人,也许几千人。

假设硬件方面已经整理好,我可以将数据存入数据库。

现在,我想把它拿出来并实时展示。

Weeeell ...“足够真实”的时间。假设我想绘制一栋建筑物的平面图,并每隔 1 到 5 秒绘制一次。

(我可能只想在单击按钮时显示某些“种类”的人;我将需要数据挖掘等,但让我们坚持最坏的情况)。

我对 PHP 很满意,虽然不是这种事情。我个人会更喜欢用 Delphi 编码的 windows 应用程序,但趋势似乎是让一切都基于浏览器。

所以,我想问题是浏览器是否可以处理这个问题,以及基于 Windows 或基于浏览器的解决方案是否有令人信服的论据。

如果基于浏览器的可以处理这个问题(每秒显示几千个数据点),并且对于 windows 没有压倒性的争论,那么我想我会选择基于浏览器并学习一些新技巧。明显的优势是我还可以重复使用我的大部分代码在 Google 地图上进行(车辆)跟踪。

4

5 回答 5

3

您的大部分工作可能会在启用空间的关系数据库中完成。例如,PostGIS 可以选择边界框内的数据点或更复杂的空间谓词(ST_Contains、ST_Crosses、ST_Intersects、ST_Touches,...)以及通常的 SQL 连接和 WHERE 条件。空间选择应该使用空间索引来加快速度。

如果是这种情况,您的应用程序将主要是一个表示层。在这种情况下,请使用对您来说最简单的方法。基于浏览器的优点是默认情况下它是跨平台的客户端-服务器,但这对你来说可能无关紧要。

关于渲染速度,它实际上取决于您计划如何渲染地图。谷歌地图提供了速度测试。但是,我怀疑如果您计划使用谷歌地图类型的界面,几千个点会变成一个模糊的针脚。你有界面模型吗?

于 2010-06-04T04:23:55.867 回答
1

如果您更喜欢使用一种类型的应用程序而不是另一种类型的应用程序,那么请编写该类型的应用程序。不要仅仅为了使其成为浏览器应用而制作浏览器应用。

于 2010-06-04T03:10:14.070 回答
1

首先,您应该了解您的应用程序的目标是什么(以及它的大小,有多少并发客户端?),然后决定是胖客户端还是瘦/网络客户端最适合它。然后您应该检查哪种应用程序能够管理您预测的负载。你能用你掌握的技术或在你的时间范围内每秒显示几千个数据点吗?多线程会帮助您利用当前的多核处理器来实现您的结果吗?哪种技术可以让您利用它?

于 2010-06-04T08:55:22.917 回答
1

也许看起来有点老了,但如果你决定使用基于浏览器的,你可以将点预渲染到图像并只显示图像?

于 2010-06-04T13:46:56.970 回答
1

网络套接字

看看 HTML5 WebSockets,它们是服务器/浏览器数据交换的新标准:

WebSockets 是一种通过单个传输控制协议 (TCP) 套接字提供双向、全双工通信通道的技术,旨在在 Web 浏览器和 Web 服务器中实现。

当新数据可用时,服务器可以将新数据推送到客户端,从而消除客户端拉取请求的开销。

Wikipedia 页面列出了可用的服务器端实现,包括 PHP 版本(但不包括 Delphi)。

WebSockets 不绑定到 JavaScript,websockets.org 页面说

此外,Web Socket 协议可用于支持多种客户端(例如 JavaScript、Adobe Flex、JavaFX、Microsoft Silverlight 等)。但是,HTML5 规范只定义了对 JavaScript 的支持,仅限于基于文本的协议。要为其他客户端类型提供服务并支持二进制协议,您需要寻找外部产品。

消息数据可以以JSON格式交换,JavaScript 支持这种格式,Delphi 也可以使用这种格式(如 SuperObject 或 lkJSON 等开源实现)。


阿贾克斯

Ajax based rich internet applications for Delphi can be built using Intraweb or ExtPascal. ExtPascal is an Object Pascal (Delphi, FreePascal/Lazarus) wrapper/binding for Ext JS, a complete GUI Ajax framework and offers transparent support for all main web browsers: IE 6+, Firefox 1.5+, Safari 3+, Opera 9+ and Chrome 2+ on any client side platform (PCs, SmartPhones, iPhone, PDAs, etc). Online demo applications: FishFacts, more.

Ajax Push (aka Reverse Ajax / Comet) offers "HTTP server push" of data (in XML or JSON format) which transfers data from the server to all connected web browser clients whenever data on the server changes. Clients can 'subscribe' to the information they are interested in.

于 2010-06-04T17:51:24.493 回答