小编Sch*_*lle的帖子

使用PostGIS查找给定Point的n个最近邻居?

我试图解决使用PostGIS找到n个最近邻居的问题:

初始点:

  • 包含纬度/经度的地理名称(来自geonames.org)的表格地名(WSG-84)
  • 添加了一个GeometryColumn geom,其中srid = 4326,数据类型= POINT
  • 填充的geom值:UPDATE geoname SET geom = ST_SetSRID(ST_Point(经度,纬度),4326);
  • 创建geom的GIST索引(CREATE INDEX geom_index ON geoname USING GIST(geom);)/ Clustered geom_index:CLUSTER geom_index ON geoname;)
  • 为geonameid创建了PRIMARY KEY UNIQUE BTREE索引

问题:在由id(geoname.geonameid)表示的表geoname中找到给定Point的n个(例如5个)最近邻居.

可能的方法:

http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_nearest_neighbor的启发,我尝试了以下查询:

"SELECT start.asciiname, ende.asciiname, distance_sphere(start.geom, ende.geom) as distance " +
"FROM geoname As start, geoname As ende WHERE start.geonameid = 2950159 AND start.geonameid <> ende.geonameid " +
"AND ST_DWithin(start.geom, ende.geom, 300) order by distance limit 5"
Run Code Online (Sandbox Code Playgroud)

处理时间:约60秒

还尝试了一种基于EXPAND的方法:

"SELECT start.asciiname, ende.asciiname, distance_sphere(start.geom, ende.geom) as distance " …
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgis

22
推荐指数
2
解决办法
2万
查看次数

在Ruby/Rails模型/控制器中引用关联/属性时,*,self.*和@*之间的差异

假设Rails模型具有持久性/非持久性属性,那么引用它们的最佳实践是什么?如果查看公开提供的代码,则会使用不同的模式.

例如,如果您有一个模型与另一个模型的关联.使用self.association_name@association_name有什么区别?.什么是更好的方式?

与在模型中使用attr_accessor:attr定义的非持久属性相同.您可以使用self.attr@attr这两种方法来引用它们.什么是更好的方式?

ruby ruby-on-rails

11
推荐指数
2
解决办法
2000
查看次数

如何使用Floyd-Steinberg抖动将24位PNG转换为3位PNG?

如何使用Floyd-Steinberg抖动将24位PNG转换为3位PNG ?java.awt.image.BufferedImage应该用于获取和设置RGB值.

在维基百科上,给出了一个如何将16位转换为8位图像的示例:

find_closest_palette_color(oldpixel) = (oldpixel + 128) / 256
Run Code Online (Sandbox Code Playgroud)

基于此,有没有关于如何适应上述示例以实现目标的想法?

java image-processing

10
推荐指数
1
解决办法
8464
查看次数

在关系数据库中实现全局唯一标识符的优点/缺点和方法?

关于我的问题的第一部分:我最近问自己,为关系数据库中的某些表提供唯一标识符有什么好处和权衡.举个例子,Facebook(FB)图谱API允许使用相同的URL获取不同类型的对象,如"用户","事件","页面"等,例如https:// domain/251906384206返回"事件"类型的对象,而https:// domain/195466193802264返回"Group"类型的对象.

与提供较少"通用"API相比,此方法的好处是什么,将以这种方式使用:https:// domain/event/251906384206https:// domain/group/195466193802264.在这种情况下,类似的标识符可能用于不同的对象类型,因为每个对象类型都有它的标识符范围.

关于问题的第二部分:实施全球唯一标识的选项有哪些?

我想到的两个选择是:

  1. 使用基于继承的方法(每个表,单个表等).假设使用了每类表方法(超级表仅包含唯一标识符作为主键,表示对象类型的子表包含与超级表和附加数据相同的标识符),超级表和子表之间需要连接,这似乎很难扩展因为超级表成为瓶颈?

  2. 提供包含3列的表格

    • 唯一标识符,
    • 对象类型特定的主键,和
    • 表名.

    每个对象类型的附加表,包含引用唯一标识符作为外键的列.每个特定于对象类型的表都有自己的主键范围.

这两种方法都允许提供类似上面提到的FB API的通用API.第二种方法允许在内部使用对象表特定的主键,并仅显示全局唯一标识符.但是,如果可能在内部使用全局唯一标识符,则第二种方法也需要连接.

是否有关于全球唯一标识符的优缺点的经验以及实施它的最佳实践?

database-design primary-key uniqueidentifier relational-database unique-key

7
推荐指数
1
解决办法
2456
查看次数

"var self = this"方法背后的理由是什么?

可能重复:
JS:var self = this?

在查看用JavaScript编写的任意代码时(例如在GitHub上),许多开发人员使用var self = this然后使用self而不是this引用当前对象.

这种方法背后的理由是什么?

javascript

6
推荐指数
2
解决办法
595
查看次数

如何检测属性何时添加到 JavaScript 对象?

var obj = {};
obj.a = 1; // fire event, property "a" added 
Run Code Online (Sandbox Code Playgroud)

这个问题是从不同的这一个,当已声明属性更改其中的方法来检测,正在讨论之中。

javascript

6
推荐指数
1
解决办法
2156
查看次数

如何检测 JavaScript 中的链式函数调用?

var Obj = {
   func1 : function() {
      // some code
      if (this._hasChainedFunc()) {
         // block should be CALLED
      }
      return this;
   },
   func2 : function() {  
      // some code
      if (this._hasChainedFunc()) {
         // block should be NOT called
      }
      return this;
   },
   _hasChainedFunc : function() {
     // code which detects if there is a chained function???
   }
}

Obj.func1().func2();
Run Code Online (Sandbox Code Playgroud)

函数_hasChainedFunc()是否有可能的实现?这个函数应该在第一次调用时返回true(因为 func2() 之后被调用),在第二次调用时返回false

在更高级的版本中,_hasChainedFunc()也可能返回之后实际调用的函数。

javascript

5
推荐指数
1
解决办法
2552
查看次数

如何触发应用程序通过REST服务获取数据?

我正在寻找一种方法来触发应用程序从远程REST服务获取数据.该方法不应要求轮询.

iOS推送通知似乎不是一个选项,因为它可以被用户停用.但是,我可能错了.

完成这项工作是否有最佳做法?

rest mobile ios

4
推荐指数
1
解决办法
229
查看次数

如何在Java中有效地实现数组元素查找和删除?

给定排序的对象数组,而顺序基于某些对象属性.(使用Collections.sort()通过List与自定义Comparator进行排序,然后调用toArray()).

不允许SomeObject的重复实例(在这方面"重复"取决于SomeObject中的多个属性值),但SomeObject的多个实例可能具有相同的attribute1值,用于排序.

public SomeObject {
  public attribute1;
  public attribute2;
}

List<SomeObject> list = ...
Collections.sort(list, new Comparator<SomeObject>() {
  @Override
  public int compare(SomeObject v1, SomeObject v2) {
    if (v1.attribute1 > v2.attribute1) {
      return 1;
    } else if (v1.attribute1 < v2.attribute1) {
      return -1;
    } else
      return 0;
  }
});
SomeObject[] array = list.toArray(new SomeObject[0]);
Run Code Online (Sandbox Code Playgroud)

如何有效地检查基于某个属性的某个对象是否在该数组中,同时还能够"标记"在先前查找中已经找到的对象(例如,只需从数组中删除它们;已经找到的对象不需要稍后访问).

如果没有后面的要求,可以使用自定义Comparator执行Arrays.binarySearch().但显然当想要删除已找到的对象时,它不起作用.

java arrays algorithm

2
推荐指数
1
解决办法
156
查看次数

如何在同一个构造函数中使用构造函数参数?

我想使用构造函数参数some_function作为一些其他构造函数参数的默认初始化参数,即some_other_function:

SomeConstructor(SomeFunction some_function,
                SomeOtherFunction some_other_function = SomeOtherFunction(some_function)) :
      some_function_(some_function),
      some_other_function_(some_other_function) 
{...}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这给出了一个编译错误:

error: 'some_function' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

c++ c++11

2
推荐指数
1
解决办法
133
查看次数

如何在模型验证中使用关联?

有一个MODEL1belongs_to的:MODEL2关联.model2有一个名为duration的属性,带有一个整数.model1有一个名为start_day的属性.在此模型中,我想验证start_day是否小于或等于model2的持续时间.

我将以下行添加到model1:

validates_numericality_of :start_day, :less_than_or_equal_to => :model2.duration
Run Code Online (Sandbox Code Playgroud)

Rails触发NoMethodError(未定义的方法`duration':model2:Symbol)

model2有一个属性持续时间......

知道我错过了什么吗?提前致谢...

validation activerecord ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
187
查看次数