我有一个看似棘手的挑战,试图通过海路从一个海港到另一个海港.最终的目标是将其作为折线在Google(或Bing)地图上绘制.
路径需要:
所以,我的第一个想法是获取世界各地海岸线的数据.这样的东西可以在这里找到.不幸的是,它不完整.OpenStreetMap显示了这些数据,并且缺少加勒比海岛屿等海岸线.
我还考虑过地理编码(不够可靠,加上我会烧掉数千个试图绘制路线的请求)
我的下一个想法是以某种方式使用谷歌地图并测试一个点是否为蓝色.GMaps.NET是一个出色的.NET Mapping组件,它允许我通过创建它渲染的位图并测试像素的颜色来实现这一点.
第一个问题是该命中测试的准确性仅与我测试的图像的分辨率图像一样好.对于彼此靠近的端口,这对于更远的端口来说是好的,精度会受到影响.
第二个问题,假设我使用某种"蓝色像素测试"方法,是什么算法适合寻找路线.在A*算法看起来很有希望,但我不知道如何从正在路径"出"推到靠近海岸.也不是如何降低折线的复杂性.
所以... 任何输入:想法,想法,链接,示例代码等都是受欢迎的.谢谢.
(我应该补充一点,这是一个旅游网站.准确性不是太重要,我不是指导运输或任何东西)
我正在使用来自Albahari的 PredicateBuilder和LINQKit 构建一个LINQ查询,该查询具有可选参数,可选的OrderBy,可选的Skip()和可选的Take().
PredicateBuilder可以很容易地构建可选参数,但我遇到了其他问题.为了简化问题:
这有效
var query = this.MyContext.Things.AsExpandable.Where(predicate).OrderBy(s => s.Name);
return query.ToList();
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情,所以我可以将OrderBy包装在if中.但它不起作用,结果不按名称顺序排列.
var query = this.MyContext.Things.AsExpandable().Where(predicate);
query.OrderBy(s => s.Name);
return query.ToList();
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?我是一个NHibernate转换器,仍然掌握着LINQ.
我的旅行项目架构的一部分有以下表格
Cruises
Flights
Hotels
CarParking
Run Code Online (Sandbox Code Playgroud)
我需要一个容器,将一个或多个这些产品包装成一个包装.一个游轮/酒店等可能是许多套餐的一部分.我最初想到的
Package
- PackageId
- Etc
PackageItem
- PackageItemId
- PackageId (fk)
- ItemId (fk)
- ItemType
Run Code Online (Sandbox Code Playgroud)
其中ItemType表示它是Cruise,Flight,Hotel等.我想我可以使用Triggers来强制引用完整性.
我的另一个想法是
Package
- ...
PackageItem
- PackageItemId
- PackageId (fk)
- CruiseId (nullable fk)
- FlightId (nullable fk)
- HotelId (nullable fk)
- CarParkingId (nullable fk)
- etc
Run Code Online (Sandbox Code Playgroud)
我想每个人都有利有弊,但我无法决定.你觉得哪个更好,如果你必须实现这样的话,你会选择哪个?
数据库是MySql.平台是C#MVC ASP.NET
(我做了搜索,但也有一些相似的问题,但没有任何相应的问题)