这是我第一次将GeoDjango与postGIS一起使用.在安装和一些运行正常的测试之后,当表行增长时,我担心查询性能.
我节省了从Google地理编码(WGS84或SRID 4326)获得的几何点经度和纬度.我的问题是距离操作在我的应用程序中很常见.我经常需要从地标附近找到景点.几何数学是非常复杂的,所以即使我有空间索引,将来可能需要太长时间才能在附近区域有超过1000个点.
那么有没有办法投影这种几何类型来更快地进行距离操作?有没有人知道Django库可以渲染包含其中一些点的谷歌地图?
有关如何加速GeoDjango空间查询的任何建议?
我一直在学习模型 - 视图 - 控制器范例("MVC"),但我很困惑,因为一些教程与其他教程相矛盾.
我目前对这个过程的理解看起来像这样:
这是从某些存储源(如数据库或XML文件)收集原始数据的位置.该模型用作抽象层,将Controller对特定数据的请求转换为(例如)SQL查询,并将查询结果转换为标准格式(如数据对象).
例如,在上面描述的/ browse/all场景中:
这是该应用程序的真正主力.除了在模型和视图中来回传递消息之外,Controller还负责授权等事务和应用程序/"业务"逻辑编辑:每个答案,业务逻辑属于模型.
在正在进行的示例中,Controller将负责:
例如
<html>
<head>
<title>
<?php $question->getTitle() ?>
</title>
</head> …Run Code Online (Sandbox Code Playgroud) 我想在C#中创建一个属性,用于设置或返回数组的单个成员.目前,我有这个:
private string[] myProperty;
public string MyProperty[int idx]
{
get
{
if (myProperty == null)
myProperty = new String[2];
return myProperty[idx];
}
set
{
myProperty[idx] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下编译错误:
错误的数组声明符:要声明托管数组,等级说明符在变量的标识符之前.要声明固定大小的缓冲区字段,请在字段类型之前使用fixed关键字.
将很多行插入到GTK树视图中时(使用PyGTK)或修改多行时,我遇到了性能问题.问题是模型似乎在每次更改(插入/修改)后都会使用.这会导致GUI挂起多秒钟.通过注释将模型保留为未排序可model.set_sort_column_id(SOME_ROW_INDEX, gtk.SORT_ASCENDING)消除这些问题.
因此,我想在插入或修改模型时禁用排序,然后重新启用它.不幸的是,无法禁用排序model.set_sort_column_id(-1, gtk.SORT_ASCENDING).使用冻结/解冻功能也不起作用:
treeview.freeze_child_notify()
try:
for row in model:
# ... change something in row ...
finally:
treeview.thaw_child_notify()
Run Code Online (Sandbox Code Playgroud)
那么,我怎样才能禁用排序?或者有更好的批量插入/修改方法吗?
解
感谢他在答案中提供的信息和链接,我检查了一些替代方案:
1)虚拟分拣
tv.freeze_child_notify()
sortSettings = model.get_sort_column_id()
model.set_default_sort_func(lambda *unused: 0) # <-- can also use None but that is slower!
# model.set_default_sort_func(lambda *unused: 1) <-- slow
# model.set_default_sort_func(lambda *unused: -1) <-- crash (access violation in gtk_tree_store_move_after?!)
model.set_sort_column_id(-1, gtk.SORT_ASCENDING)
# change rows
model.set_sort_column_id(*sortSettings)
tv.thaw_child_notify()
Run Code Online (Sandbox Code Playgroud)
这使得时间从大约11秒减少到2秒.哇!但可能会更好,这只是1000行.
2)更新时删除模型
tv.set_model(None)
# change rows
tv.set_model(model)
Run Code Online (Sandbox Code Playgroud)
没有明显的区别,11秒.
3)Dummy排序和PyGTK常见问题解答中的酷发生器技巧
def gen(): …Run Code Online (Sandbox Code Playgroud) 我有两个清单
List 01 => { A, B, C, D, E }
List 02 => { F, F, F, F, E }
Run Code Online (Sandbox Code Playgroud)
我需要检查是否List 02存在一个元素List 01,所以以下内容应该是false.
List 01 => { A, B, C, D, E }
List 02 => { F, F, F, F, F } // no element matches
Run Code Online (Sandbox Code Playgroud)
这应该是true.
List 01 => { A, B, C, D, E }
List 02 => { F, F, F, F, B } // last element …Run Code Online (Sandbox Code Playgroud) 我想在Dired中显示一个目录,其中一些子目录是递归打开的(就好像我为它们传递了"R"选项).是否可以在Emacs中执行此操作?如何在Elisp中轻松实现这一点?
在Windows资源管理器中,我会在文件夹窗口中按"*"以递归方式打开目录(当然只有子目录可见,而不是文件).我想在Emacs中做同样的事情,但那些文件也是可见的.
来自源的数据具有字符串数据类型,有时具有无效日期,空列('')我想检查它是否是有效日期并将字符串转换为日期时间.我怎样才能在SSIS中做到这一点?
我的字符串值已格式化为mm/dd/yyyy.
我有以下代码片段让我烦恼,其中currentRate和secondCurrentRate是Double对象,正确定义:
(currentRate != null && secondCurrentRate != null) ? currentRate * secondCurrentRate : null;
Run Code Online (Sandbox Code Playgroud)
这应该检查每个Double的null-ness并相应地赋值null.但是,如果secondCurrentRate为null,则会导致NullPointerException.我已将代码段更改为:
(currentRate == null | secondCurrentRate == null) ? null : currentRate * secondCurrentRate;
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作.我的问题是为什么会发生这种情况?如果我在对象上调用某个方法,我可以理解它,但我的理解是当在null对象上调用方法时抛出NullPointerExceptions.有一个null对象,但没有方法调用.
任何人都可以对此提供任何见解吗?这是在Java 5中运行的.
以下编辑更新!!! 感谢您的帮助,请务必指出所有错误,我不在乎是否听起来粗鲁或卑鄙,或者其他什么,emo垃圾.直接把它给我,这样我就可以理解出了什么问题.
嗨,大家好!
我是一名新手C++程序员,试图学习并获得一些C++的IRL exp.
我在VC++(vs2008)编译器中尝试以下内容:
typedef unsigned short USHORT;
class Grid
{
...
public:
Grid()
{
Tile[36]* tileList_ptr;
}
...
};
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我想放入36个瓷砖,将它们撞到一个漂亮整齐的数组中,以便在8x8的游戏区域中大小不变.像棋盘一样.用指针引用它们,如果需要,在相关的cpp文件中摆弄它们.
如果你现在没有笑到这个尝试,那么我可能会出现语法错误,而不是主要的设计缺陷:P
任何帮助将非常感激!
提前致谢
编辑24/08/2010 13:49(开始时间)
我的代码现在如下例子:
Grid Header文件Grid.h:
#include "Tile.h"
class Grid
{
//no more typedef used
public:
Tile grid[8][8];
private:
unsigned short selectedItemIndexValue;
public:
Grid()
{
Initialize();
}
~Grid(){}
void Update();
void FinalizeMove(unsigned short index);
void Draw();
private:
void Initialize(); //Initializes members
};
Run Code Online (Sandbox Code Playgroud)
Grid.cpp文件:
#include "stdafx.h"
#include "Grid.h"
//Not tile , that used to give me …Run Code Online (Sandbox Code Playgroud)