Mapscript QueryBypint إرجاع أي نتائج
سؤال
لدي خريطة mapfile التي تم إنشاؤها ديناميكيا مع C # Mapscript المعرفة مثل:
MAP
EXTENT 5.91828 45.63552 5.92346 45.65051
IMAGECOLOR 192 192 192
IMAGETYPE png
SIZE 256 256
STATUS ON
TRANSPARENT TRUE
UNITS METERS
NAME "GMAP_TILE"
OUTPUTFORMAT
NAME "png"
MIMETYPE "image/png"
DRIVER "GD/PNG"
EXTENSION "png"
IMAGEMODE "PC256"
TRANSPARENT TRUE
END
SYMBOL
NAME "circle"
TYPE ELLIPSE
FILLED TRUE
POINTS
1 1
END
END
SYMBOL
NAME ">"
TYPE TRUETYPE
ANTIALIAS TRUE
CHARACTER ">"
GAP -20
FONT "arial"
POSITION CC
END
PROJECTION
"proj=merc"
"a=6378137"
"b=6378137"
"lat_ts=0.0"
"lon_0=0.0"
"x_0=0.0"
"y_0=0"
"units=m"
"k=1.0"
"nadgrids=@null"
END
LEGEND
IMAGECOLOR 255 255 255
KEYSIZE 20 10
KEYSPACING 5 5
LABEL
SIZE MEDIUM
TYPE BITMAP
BUFFER 0
COLOR 0 0 0
FORCE FALSE
MINDISTANCE -1
MINFEATURESIZE -1
OFFSET 0 0
PARTIALS TRUE
END
POSITION LL
STATUS OFF
END
QUERYMAP
COLOR 255 255 0
SIZE -1 -1
STATUS ON
STYLE HILITE
END
SCALEBAR
ALIGN CENTER
COLOR 0 0 0
IMAGECOLOR 255 255 255
INTERVALS 4
LABEL
SIZE MEDIUM
TYPE BITMAP
BUFFER 0
COLOR 0 0 0
FORCE FALSE
MINDISTANCE -1
MINFEATURESIZE -1
OFFSET 0 0
PARTIALS TRUE
END
POSITION LL
SIZE 200 3
STATUS OFF
STYLE 0
UNITS MILES
END
WEB
IMAGEPATH ""
IMAGEURL ""
QUERYFORMAT text/html
LEGENDFORMAT text/html
BROWSEFORMAT text/html
END
LAYER
NAME "Troncons"
PROJECTION
"proj=longlat"
"ellps=WGS84"
"datum=WGS84"
END
STATUS DEFAULT
TEMPLATE "nofile.html"
TOLERANCE 100
TOLERANCEUNITS METERS
TYPE LINE
UNITS METERS
CLASS
NAME "Troncons"
STYLE
ANGLE 360
COLOR 0 0 255
SIZE 5
SYMBOL "circle"
WIDTH 5
END
STYLE
ANGLE 360
COLOR 0 0 0
SIZE 12
SYMBOL ">"
WIDTH 1
END
END
FEATURE
POINTS
5.91828 45.63552
5.91876 45.63611
5.91898 45.6364
5.91936 45.63701
5.91952 45.63731
5.91968 45.63762
5.91993 45.63825
5.92003 45.63856
5.92018 45.63919
5.92028 45.63983
5.92031 45.64014
5.92033 45.64046
5.92034 45.64077
5.92034 45.64108
5.92034 45.64171
5.92035 45.64234
5.92035 45.6428
5.92037 45.6433
5.9204 45.64394
5.92046 45.64458
5.92056 45.64522
5.92062 45.64554
5.92069 45.64586
5.92077 45.64617
5.92097 45.64679
5.92122 45.64739
5.92136 45.64769
5.92169 45.64828
5.92207 45.64886
5.92228 45.64914
5.92272 45.64969
5.92321 45.65023
5.92346 45.65051
END
END
END
END
أحاول أن Querybypoint لإعادة التقاط فهرس الشكل Clciked بالقرب من. في الكود أدناه، قمت بإجراء وظيفة اختبار محددة مع نقطة ثابتة بدلا من النقاط التي تم تمريرها بواسطة المعلمة لذلك أنا متأكد من أن النقطة التي أستخدمها هي في الواقع جزء من ميزة. في حالتي، استخدم النقطة الأولى من الميزة الوحيدة الموجودة في MapFile.
public string GetTronconId()
{
//_map is my dynamically created mapObj
if (_map != null)
for (int i = 0; i < _map.numlayers; i++)
{
layerObj layer = _map.getLayer(i);
// Code never pass this point
if (layer.queryByPoint(_map, new pointObj(5.91898, 45.6364, 0, 0), (int) MS_QUERY_MODE.MS_QUERY_MULTIPLE, 100) == (int) MS_RETURN_VALUE.MS_SUCCESS)
{
int numresults = layer.getNumResults();
if (numresults != 0)
{
layer.open();
for (int j = 0; j < numresults; j++)
{
resultCacheMemberObj resultat = layer.getResult(j);
shapeObj shape = null;
if (layer.getShape(shape, resultat.tileindex, resultat.shapeindex) == (int) MS_RETURN_VALUE.MS_SUCCESS)
return shape.getValue(0);
}
}
}
}
return null;
}
لدي مجموعة قالب دمية، وأنا لا تضطر إلى استخدام التسامح لأن النقطة مفصلة في شكل، ولكن QueryBypoint الاستمرار في العودة لي MS_FAILURE. من عمليات البحث الخاصة بي على شبكة الإنترنت، يبدو أن كل شيء على ما يرام. اي فكرة؟
المحلول
حسنا، المحاولة الثانية: تحتاج وظيفة QueryBypoint تحتاج إلى نقطة استعلام في إسقاط الخريطة، وليس الإسقاط الطبقة.
نصائح أخرى
طبقة الخاصة بك لديها الإسقاط lonlat، ولكن وحدات متر. قم بإزالة ذلك من الطبقة أو تغييره إلى DD.
أعتقد أنك يجب أن تفتح طبقة قبل أن تتمكن من الحصول على ميزات منه:
فتح (): الفراغ يفتح الطبقة الأساسية. هذا مطلوب قبل أن تعمل العمليات مثل GetFeature ()، ولكنها غير مطلوبة قبل استدعاء السحب أو الاستعلام.