我正在尝试更改ArcGIS的单元测试,并开始使用模拟(我使用rhino).
当我开始编写测试时,我注意到我必须开始模拟很多对象,并且存在很多方法,甚至可以通过单个测试.
例如 - 我的控制器首先得到一个RelationshipClass(所以我需要存根IWorkspace和返回IRelationshipClass),然后得到一个IFeature(存根),最后调用stubRelClass.GetRelatedObjects(stubFeature),返回ISet其他的IFeatures.
为了让它通过,必须存根这么多的对象和方法是否正常?我也觉得我真的需要跨过代码(是的 - 我知道我应该先编写测试,我还在尝试这个),以便弄清楚接下来会发生什么,以及我应该返回什么.
我也有模拟实现多个接口的com类的问题.在生产代码I QI他们之间的接口.如何创建在运行时实现两个接口的模拟?
我是一名计算机科学家,我一直在使用Java来开发应用程序.我刚被雇用在一家使用ArcGIS制作项目的公司.该公司聘请了na电气工程师来开发arcGIS项目.这位工程师过去常常使用VBA自定义ArcMap,最近使用.NET和C#自定义扩展.
我想走一条新路,开始使用带有Java的ArgGIS Engine.我想知道这个选择是否正确.你们中的任何一个人都在使用Engine-Java进行开发吗?它有多难(使用JNI - 我知之甚少 - 让它变得更难?).我也有一点.NET和c ++的经验,但不是C#.我对这条路有一个很大的学习曲线吗?
还有哪些方法的优缺点和局限性?
我想导出我的ArcGIS地图对象的图像,上面有图形图层.我已经尝试过esri自己的Web服务用于导出,但它们不是那么高效和清晰,不支持复杂的几何形状,也不支持Google地图提供商等本地层.服务仅支持ArcGISTiledLayer,我想在所有层中使用它.所以,我在他们的论坛中搜索,但他们说他们不会支持本地层,直到下一个版本.
我在codeplex中尝试过ImageTool库和WritableBitmapEx库.但是当我尝试从WritableBitmap获取byte []时,由于某些安全原因,我无法访问其Pixels属性.应用程序抛出SecurityException并说"你无法访问这个像素属性".
那么,有没有办法获取UIElement控件的图像并将其保存到磁盘?或者是否有针对此安全例外的解决方法?
我试图从多个角度找到自然环境的可见度.我有一个DEM和一个定义自然环境的栅格.对于每个细胞,我有坡度,高度,方位和距离观点的距离.我想计算视点和每个单元格之间的角度.
我最初通过获取视点的x,y,z坐标以及倾斜单元格的底部和顶部来实现此目的.然后获取每个坐标之间的3D距离并使用这些距离来获得角度.然后,我将对每个单元格求和以获得总可见度.
问题是这种方法仅在视点和可见单元之间的方位与坐标系的x和y轴对齐时才起作用.这是因为为了计算单元角的点坐标,我减去并将单元分辨率/ 2添加到单元质心.
代码如下
def Cell_Loc (VPX, VPY, VPZ, cell_x, cell_y, cell_z, aspect, cell_resolution, bearing):
import math
from math import sqrt
#Get change in height of cell using slope and cell resolution (trig)
AspectTan = math.tan(math.radians(aspect))
Opposite = (AspectTan * cell_res)
#Get coordinates for cell corners
CloseCornerX = cent_x - 2.5
CloseCornerY = cent_y - 2.5
FarCornerX = cent_x + 2.5
FarCornerY = cent_y + 2.5
CloseCornerZ = cent_z - (Opposite/2)
FarCornerZ = cent_z + (Opposite/2)
#Get Distance between …Run Code Online (Sandbox Code Playgroud) 我试图在我的应用程序中实现此代码,但它不起作用,我不知道我哪里出错了.
基本上,当我启动设备位置的样本时.它没有告诉我我当前的位置在哪里,我没有看到任何类似于我当前位置的蓝点.
我看到的唯一一件事是地图.只是一个简单的缩小地图.
如果有人可以帮我解决如何使用地图上显示的蓝点来获取当前位置,我将非常感激.
这是我的MainActivity.class
public class HelloWorld extends Activity {
MapView mMapView = null;
ArcGISTiledMapServiceLayer tileLayer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Retrieve the map and initial extent from XML layout
mMapView = (MapView) findViewById(R.id.map);
mMapView.addLayer(new ArcGISTiledMapServiceLayer(
"http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"));
mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {
public void onStatusChanged(Object source, STATUS status) {
if (source == mMapView && status == STATUS.INITIALIZED) {
LocationService ls = mMapView.getLocationService();
ls.setAutoPan(false);
ls.start();
}
}
});
} …Run Code Online (Sandbox Code Playgroud) 尝试连接到示例休息服务时,我收到以下错误,前提是Arcgis Javascript API文档.
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://bcgphp' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
在dojo文档之后,我按照以下方式设置了我的dojo/store.
var jsonStore = new JsonRest({
target: "//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/"
});
jsonStore.get(5);
Run Code Online (Sandbox Code Playgroud)
我也尝试过每个dojo 文档传入一些标题,它返回与上面代码相同的错误.
var jsonStore = new JsonRest({
target: "//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/",
headers: {'X-Requested-With': 'XMLHttpRequest'}
});
jsonStore.get(5);
Run Code Online (Sandbox Code Playgroud)
当我使用Arcgis Javascript查询时,我能够使用此演示中提供的以下代码发出此请求这不会导致任何跨域问题.
var queryTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");
var query = new Query();
query.returnGeometry = false;
query.outFields = [
"SQMI", "STATE_NAME", "STATE_FIPS", "SUB_REGION", "STATE_ABBR",
"POP2000", "POP2007", "POP00_SQMI", "POP07_SQMI", "HOUSEHOLDS",
"MALES", "FEMALES", …Run Code Online (Sandbox Code Playgroud) Shape_area是什么意思?我注意到它不是Aland和Awater的总和.这三个单位是多少?
我有一个python脚本,单独运行时效果很好.它基于硬编码的输入目录,扫描所有.mdb文件并将其放入列表中,然后在for循环中遍历它们.每次迭代都涉及多个表限制,连接,查询等.
唯一的问题..在输入数据集上运行大约需要36个小时,而这个脚本只会在这个实例中用于此数据集,我想提高性能,因为我经常编辑字段选择,结果包括,加入方法等我想说它需要很长时间,因为我的脚本效率低下,但任何低效率都会很小,因为几乎所有的处理时间都专用于地理处理器对象.
我在主脚本中的所有相关内容是:
indir = "D:\\basil\\input"
mdblist = createDeepMdbList(indir)
for infile in mdblist:
processMdb(infile)
Run Code Online (Sandbox Code Playgroud)
它在顺序执行时也能完美执行.
我尝试过使用Parallel Python:
ppservers = ()
job_server = pp.Server(ppservers=ppservers)
inputs = tuple(mdblist)
functions = (preparePointLayer, prepareInterTable, jointInterToPoint,\
prepareDataTable, exportElemTables, joinDatatoPoint, exportToShapefile)
modules = ("sys", "os", "arcgisscripting", "string", "time")
fn = pp.Template(job_server, processMdb, functions, modules)
jobs = [(input, fn.submit(input)) for input in inputs]
Run Code Online (Sandbox Code Playgroud)
它成功创建了8个进程,8个地理处理器对象......然后失败了.
我没有对内置的Python多线程工具进行过广泛的实验,但希望能够提供一些指导,简单地生成多达8个进程,这些进程通过mdblist表示的队列.在任何时候都不会尝试由多个进程同时写入或读取任何文件.为了使事情暂时变得简单,由于这个问题,我还删除了所有的日志记录工具; 我已经足够多次运行这个脚本,知道它的工作原理除了4104输入的4个文件之外,这些文件的数据格式略有不同.
建议吗?尝试多线程Arc Python脚本的智慧?
我试图DialogFragment弹出并显示可滚动TextView图例,但它只是切断了图例的其余部分。我无法滚动浏览它或任何东西。我尝试添加 aScrollView但它没有任何作用。这是我得到的屏幕:
这是我的 XML 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:scrollbars="vertical"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:background="#fff">
<TextView
android:id="@+id/layer_legend_title_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:background="#fff"
android:textColor="#000" />
<ListView
android:id="@+id/layer_legend_symbols_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:background="#fff"
android:textColor="#000" />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我运行此命令将内容添加到TextView:
/**
* A dialog that shows the legend of a ArcGISDynamicMapServiceLayer.
*/
public class LegendDialogFragment extends DialogFragment implements View.OnClickListener {
public static final String TAG = LegendDialogFragment.class.getSimpleName();
private LinearLayout mLinearLayout;
private ArcGISDynamicMapServiceLayer …Run Code Online (Sandbox Code Playgroud) android arcgis android-layout android-scrollview android-dialogfragment
arcgis ×10
gis ×3
android ×2
c# ×2
esri ×2
java ×2
python ×2
.net ×1
cross-domain ×1
dojo ×1
javascript ×1
map ×1
maps ×1
mocking ×1
qgis ×1
rhino-mocks ×1
silverlight ×1
tiger-census ×1
trigonometry ×1
unit-testing ×1
visibility ×1